event.gno

3.15 Kb · 80 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/u16"},
30		Gatekeepers: []string{"gno.land/r/zenao/users/u26"},
31		Title: "#DANCERS CLUB 🪩",
32		Description: "🥷 Samouraï Coop présente Dancers Club, un nouveau rendez-vous parisien pour toutes les personnes amatrices de danse. Une soirée ouverte à toutes et tous, où musique et partage se rencontrent dans un cadre intimiste au TDTF, en plein cœur de Paris.\n\n📆 Au programme :\n\n19h – 21h : Rencontre autour de la danse – échanges et discussions\n21h – 02h : Dancefloor libre avec DJ, mixant Disco, HipHop, House et Afro, pour faire danser chacun·e, de la personne danseuse confirmée au·à la simple curieux·se\nDancers Club est avant tout un moment de partage et de convivialité, parfait pour rencontrer la communauté et danser toute la soirée dans un lieu sûr et chaleureux.\n\n📍 Lieux : TDTF - 43, Rue Cavendish, 75019 Paris - M5 Laumière \n🎟️ Tarif : Gratuit – réservation sur Zenao : https://zenao.io/event/62\n\n⛩️ Samouraï Coop \nSite officiel : https://www.samourai.world/  \nInstagram : https://www.instagram.com/samourai.tv  \nFacebook : https://www.facebook.com/samouraicoop  \nYouTube: https://www.youtube.com/channel/UC0gExSSzyU8gTqUjoYerI8A  \nBoutique : https://samourai.fun/",
33		ImageURI: "ipfs://bafybeibewqds5q2q4by4uao6vre3fcxkircu7okcso7duksdplrlgozcfy",
34		StartDate: 1763748000,
35		EndDate: 1763773200,
36		Capacity: 100,
37		Discoverable: true,
38		GetProfileString: profile.GetStringField,
39		SetProfileString: profile.SetStringField,
40		ZenaoAdminAddr: "g1djrkw9tf4px658j85cc6fhsvm50uf9s0g6kfsm",
41		Location: &zenaov1.EventLocation{
42			Address: &zenaov1.AddressCustom{
43				Address: "43 Rue Cavendish, 75019 Paris, France",
44				Timezone: "Europe/Paris",
45			},
46		},
47		ParticipationPubkey: "",
48		CrossFn: crossFn,
49		SetImplemFn: setImplem,
50		FeedId: feedId,
51		PrivateVarName: "event",
52	}
53	event = events.NewEvent(&conf)
54	eventreg.Register(cross, func() *zenaov1.EventInfo { return event.Info() })
55}
56
57func Vote(_ realm, proposalID uint64, vote daocond.Vote) {
58	localDAO.Vote(proposalID, vote)
59}
60
61func Execute(_ realm, proposalID uint64) {
62	localDAO.Execute(proposalID)
63}
64
65func Render(path string) string {
66	return localDAO.Render(path)
67}
68
69func feedAuth() (string, bool) {
70	caller := event.DAOPrivate.CallerID() // XXX: this should be upgradable
71	return caller, basedao.MustGetMembersViewExtension(localDAO).IsMember(caller)
72}
73
74func crossFn(_ realm, cb func()) {
75	cb()
76}
77
78func setImplem(newLocalDAO daokit.DAO, newDAO daokit.DAO) {
79	localDAO, DAO = newLocalDAO, newDAO
80}