Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

reviews_adapter.gno

2.88 Kb · 48 lines
 1// Fixed reviews target chosen once during generation. Never imports both versions.
 2package memba_dao
 3import (
 4    "gno.land/p/samcrew/memba_weighted_host"
 5    "gno.land/r/samcrew/memba_reviews_v2"
 6)
 7func reviewsState(a memba_weighted_host.ReviewsAction) memba_weighted_host.ReviewsState {
 8    s := memba_weighted_host.ReviewsState{Moderator:address(memba_reviews_v2.GetModerator()),PendingModerator:address(memba_reviews_v2.GetPendingModerator())}
 9    if a.ID() != 0 {
10        i := memba_reviews_v2.GetModerationState(a.ID())
11        s.Item = memba_weighted_host.ReviewsItem{ID:i.ID, Review:i.Review, ParentID:i.ParentID, Subject:i.Subject, Author:i.Author, Rating:i.Rating, BodyHash:i.BodyHash, CreatedAt:i.CreatedAt, EditedAt:i.EditedAt, Hidden:i.Hidden, Deleted:i.Deleted, Flagged:i.Flagged}
12    }
13    return s
14}
15func ProposeReviewsAccept(cur realm) uint64 { a := reviewsPolicy.Accept(); return host.ProposeReviews(a,reviewsState(a),cur) }
16func ProposeReviewsReturn(cur realm) uint64 { a := reviewsPolicy.Return(); return host.ProposeReviews(a,reviewsState(a),cur) }
17func ProposeReviewsAbortReturn(cur realm) uint64 { a := reviewsPolicy.AbortReturn(); return host.ProposeReviews(a,reviewsState(a),cur) }
18func ProposeReviewsHideReview(cur realm, id uint64) uint64 { a := reviewsPolicy.HideReview(id); return host.ProposeReviews(a,reviewsState(a),cur) }
19func ProposeReviewsHideComment(cur realm, id uint64) uint64 { a := reviewsPolicy.HideComment(id); return host.ProposeReviews(a,reviewsState(a),cur) }
20func ProposeReviewsUnhide(cur realm, id uint64) uint64 { a := reviewsPolicy.Unhide(id); return host.ProposeReviews(a,reviewsState(a),cur) }
21func executeReviews(cur realm, id uint64) {
22    proposed := host.Proposal(id).ReviewsAction
23    before := reviewsState(proposed)
24    a := host.ConsumeReviews(id,before,cur)
25    expected := before
26    switch a.Kind() {
27    case memba_weighted_host.ReviewsAcceptModerator:
28        expected.Moderator = reviewsPolicy.DAO(); expected.PendingModerator = ""
29        memba_reviews_v2.AcceptOwnership(cross(cur))
30    case memba_weighted_host.ReviewsReturnModerator:
31        expected.PendingModerator = a.Recipient()
32        memba_reviews_v2.TransferOwnership(cross(cur),a.Recipient())
33    case memba_weighted_host.ReviewsAbortReturn:
34        expected.PendingModerator = ""
35        memba_reviews_v2.CancelOwnershipTransfer(cross(cur))
36    case memba_weighted_host.ReviewsHideReview:
37        expected.Item.Hidden = true
38        memba_reviews_v2.HideReview(cross(cur),a.ID())
39    case memba_weighted_host.ReviewsHideComment:
40        expected.Item.Hidden = true
41        memba_reviews_v2.HideComment(cross(cur),a.ID())
42    case memba_weighted_host.ReviewsUnhide:
43        expected.Item.Hidden = false; expected.Item.Flagged = false
44        memba_reviews_v2.Unhide(cross(cur),a.ID())
45    default: panic("unsupported reviews action")
46    }
47    if reviewsState(a) != expected { panic("reviews postcondition mismatch") }
48}