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}