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}