event.gno

3.26 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/u376"},
30		Gatekeepers: []string{},
31		Title: "Atelier d’écriture à La Virgule",
32		Description: "À travers des exercices guidés, les participants apprennent à identifier les moments charnières de leur parcours, à donner forme narrative aux souvenirs marquants et à créer du lien entre les différentes étapes de leur existence.\n\nQu'il s'agisse de raconter un tournant décisif, de retracer l'évolution d'une passion ou de mettre en mots une leçon de vie, chaque exercice permet de révéler la richesse et la singularité de son histoire personnelle.\n\nL'atelier alterne entre temps d'écriture individuelle et moments de partage, où les récits résonnent et s'enrichissent mutuellement. Les participants repartent avec des textes achevés et les clés pour continuer à écrire leur propre histoire, découvrant que chaque vie recèle des trésors narratifs insoupçonnés.\n\nRendez-vous le vendredi 5 septembre de 14h à 16h à La Virgule pour cet atelier d'écriture co-construit avec La Maison Perchée en Finistère, le C3RB et le PTSM29.\n\nCet atelier d'écriture est gratuit, mais sur inscription par email car la jauge de participants est limitée à 10 personnes.\n\n---\n\n- ✍️ Atelier d'écriture\n- 📆 Vendredi 12 septembre 2025, de 14h à 16h\n- 📍 La Virgule, 9 rue de Paris 29600 Morlaix",
33		ImageURI: "ipfs://bafkreidbunrdf46wlrr6jjhkukxhwavca6c7c3nder34xwabqj7zf7dzam",
34		StartDate: 1757678400,
35		EndDate: 1757685600,
36		Capacity: 10,
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 Virgule - 9 Rue de Paris, 29600 Morlaix, France",
44				Lat: 48.576057,
45				Lng: -3.8242989,
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}