event.gno
3.03 Kb · 81 lines
1package event
2
3import (
4 zenaov1 "gno.land/p/zenao/zenao/v1"
5 "gno.land/p/zenao/events"
6 "gno.land/p/zenao/basedao"
7 "gno.land/p/zenao/daokit"
8 "gno.land/p/zenao/daocond"
9 "gno.land/r/demo/profile"
10 "gno.land/r/zenao/eventreg"
11 "gno.land/r/zenao/social_feed"
12)
13
14var (
15 DAO daokit.DAO
16 localDAO daokit.DAO
17
18 event *events.Event // XXX: needed for backward compatibility with frontend queries
19 feedId string // XXX: workaround for "unexpected zero object id" issue
20)
21
22func init() {
23 // XXX: workaround for "unexpected zero object id" issue
24 feedId = social_feed.NewFeed(cross, "main", false, feedAuth)
25}
26
27func init() {
28 conf := events.Config{
29 Organizers: []string{"gno.land/r/zenao/users/u434"},
30 Gatekeepers: []string{"gno.land/r/zenao/users/u440"},
31 Title: "\"Just Make!\" Sprint Week",
32 Description: "## Overview\n\nThe Gno Core team is booking a small coworking space and getting together with DevRel and partner teams in Lyon. The goal is to meet in person and launch the betanet release candidate (and hopefully, the betanet!). It's meant to be an in-person sprint week where we push towards the launch.\n\n## Things to know\n- This gathering hasn't been given budget approval. Everyone makes their own travel arrangements, but keep your receipts just in case we manage to get approval after the fact.\n- Try to get to Lyon on Aug 31, so you'd be fresh on Monday morning.\n- We don't have any organized activities planned for the evenings. No events or swag planned. Bring good vibes, and a charged computer!\n- We're expecting around 20 people from core, DevRel, Samourai, Onbloc and Berty.\n- Coworking space is available from 9:00 to 18:30 every day.\n- If you plan to come, please let Mig know so he could keep track of attendees.",
33 ImageURI: "ipfs://bafkreibz3uex666csujjye6a5huaew4jxs6l2upheheshho2ve3qpwxju4",
34 StartDate: 1756710000,
35 EndDate: 1757108700,
36 Capacity: 25,
37 Discoverable: true,
38 GetProfileString: profile.GetStringField,
39 SetProfileString: profile.SetStringField,
40 ZenaoAdminAddr: "g1djrkw9tf4px658j85cc6fhsvm50uf9s0g6kfsm",
41 Location: &zenaov1.EventLocation{
42 Address: &zenaov1.AddressGeo{
43 Address: "La Bulle - Rue Fénelon, 69006 Lyon, France",
44 Lat: 45.764347,
45 Lng: 4.843437,
46 },
47 },
48 ParticipationPubkey: "84kUHwr-1K_uhhJ55Gewc8kKygbHS_s27Im98DgFrns",
49 CrossFn: crossFn,
50 SetImplemFn: setImplem,
51 FeedId: feedId,
52 PrivateVarName: "event",
53 }
54 event = events.NewEvent(&conf)
55 eventreg.Register(cross, func() *zenaov1.EventInfo { return event.Info() })
56}
57
58func Vote(_ realm, proposalID uint64, vote daocond.Vote) {
59 localDAO.Vote(proposalID, vote)
60}
61
62func Execute(_ realm, proposalID uint64) {
63 localDAO.Execute(proposalID)
64}
65
66func Render(path string) string {
67 return localDAO.Render(path)
68}
69
70func feedAuth() (string, bool) {
71 caller := event.DAOPrivate.CallerID() // XXX: this should be upgradable
72 return caller, basedao.MustGetMembersViewExtension(localDAO).IsMember(caller)
73}
74
75func crossFn(_ realm, cb func()) {
76 cb()
77}
78
79func setImplem(newLocalDAO daokit.DAO, newDAO daokit.DAO) {
80 localDAO, DAO = newLocalDAO, newDAO
81}