event.gno

3.00 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/u98"},
30		Gatekeepers: []string{},
31		Title: "#DANCERS CLUB 🪩",
32		Description: "La Coopérative Samouraï présente Dancers Club, un nouveau rendez-vous parisien pour tous les amateurs de danse. Une soirée ouverte à tous, où musique et partage se rencontrent dans un cadre intimiste au TDTF, en plein cœur de Paris.\n\nAu programme :\n19h – 21h : Apéro / rencontre autour de la danse – échanges et discussions\n21h – 02h : Dancefloor libre avec DJ, mixant Disco, HipHop, House et Afro, pour faire danser chacun, du danseur confirmé au simple curieux\n\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\nTarif : Gratuit – réservation recommandée\n\n⛩️ La Coopérative Samouraï\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://bafkreia5npqkaudof24jcenayub5jueo6kaccswztst4abzyknagdqqpem",
34		StartDate: 1760720400,
35		EndDate: 1760745600,
36		Capacity: 100,
37		Discoverable: true,
38		GetProfileString: profile.GetStringField,
39		SetProfileString: profile.SetStringField,
40		ZenaoAdminAddr: "g1djrkw9tf4px658j85cc6fhsvm50uf9s0g6kfsm",
41		Location: &zenaov1.EventLocation{
42			Address: &zenaov1.AddressGeo{
43				Address: "43 Rue Cavendish, 75019 Paris, France",
44				Lat: 48.884357,
45				Lng: 2.3787982,
46			},
47		},
48		ParticipationPubkey: "",
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}