event_demo.gno

2.15 Kb ยท 75 lines
 1package event_demo
 2
 3import (
 4	"time"
 5
 6	"gno.land/p/zenao/basedao"
 7	"gno.land/p/zenao/daocond"
 8	"gno.land/p/zenao/daokit"
 9	"gno.land/p/zenao/events"
10	zenaov1 "gno.land/p/zenao/zenao/v1"
11	"gno.land/r/demo/profile"
12	"gno.land/r/zenao/social_feed"
13)
14
15var (
16	DAO      daokit.DAO
17	localDAO daokit.DAO
18
19	event  *events.Event // XXX: needed for backward compatibility with frontend queries
20	feedId string        // XXX: workaround for "unexpected zero object id" issue
21)
22
23func init() {
24	// XXX: workaround for "unexpected zero object id" issue
25	feedId = social_feed.NewFeed(cross, "main", false, feedAuth)
26}
27
28func init() {
29	zenaoAdmin := "g1djrkw9tf4px658j85cc6fhsvm50uf9s0g6kfsm"
30	creator := "g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5" // replace w/ address of the user realm
31	conf := events.Config{
32		Organizers:       []string{creator},
33		Title:            "Demo",
34		Description:      "This is a demo zenao event",
35		ImageURI:         "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Wiki-IMG_20200904_200004436.jpg/640px-Wiki-IMG_20200904_200004436.jpg",
36		StartDate:        time.Now().Add(48 * time.Hour).Unix(),
37		EndDate:          time.Now().Add(96 * time.Hour).Unix(),
38		Capacity:         500,
39		GetProfileString: profile.GetStringField,
40		SetProfileString: profile.SetStringField,
41		ZenaoAdminAddr:   zenaoAdmin,
42		Location:         &zenaov1.EventLocation{Address: &zenaov1.AddressCustom{Address: "To be disclosed", Timezone: "Europe/Paris"}},
43		Discoverable:     true,
44		CrossFn:          crossFn,
45		SetImplemFn:      setImplem,
46		FeedId:           feedId,
47		PrivateVarName:   "event",
48	}
49	event = events.NewEvent(&conf)
50}
51
52func Vote(_ realm, proposalID uint64, vote daocond.Vote) {
53	localDAO.Vote(proposalID, vote)
54}
55
56func Execute(_ realm, proposalID uint64) {
57	localDAO.Execute(proposalID)
58}
59
60func Render(path string) string {
61	return localDAO.Render(path)
62}
63
64func feedAuth() (string, bool) {
65	caller := event.DAOPrivate.CallerID() // XXX: this should be upgradable
66	return caller, basedao.MustGetMembersViewExtension(localDAO).IsMember(caller)
67}
68
69func crossFn(_ realm, cb func()) {
70	cb()
71}
72
73func setImplem(newLocalDAO daokit.DAO, newDAO daokit.DAO) {
74	localDAO, DAO = newLocalDAO, newDAO
75}