community.gno
    5.25 Kb · 71 lines
    
  
 1package community
 2
 3import (
 4	zenaov1 "gno.land/p/zenao/zenao/v1"
 5	"gno.land/p/zenao/communities"
 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/communityreg"
11	"gno.land/r/zenao/social_feed"
12)
13
14var (
15	DAO      daokit.DAO
16	localDAO daokit.DAO
17
18	community *communities.Community // 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 := communities.Config{
29		ZenaoAdminAddr:   "g1djrkw9tf4px658j85cc6fhsvm50uf9s0g6kfsm",
30		Administrators:   []string{"gno.land/r/zenao/users/u16", "gno.land/r/zenao/users/u26", "gno.land/r/zenao/users/u98"},
31		Members:          []string{"gno.land/r/zenao/users/u9", "gno.land/r/zenao/users/u16", "gno.land/r/zenao/users/u26", "gno.land/r/zenao/users/u38", "gno.land/r/zenao/users/u41", "gno.land/r/zenao/users/u87", "gno.land/r/zenao/users/u92", "gno.land/r/zenao/users/u94", "gno.land/r/zenao/users/u98", "gno.land/r/zenao/users/u197", "gno.land/r/zenao/users/u198", "gno.land/r/zenao/users/u304", "gno.land/r/zenao/users/u306", "gno.land/r/zenao/users/u360", "gno.land/r/zenao/users/u512", "gno.land/r/zenao/users/u513", "gno.land/r/zenao/users/u515", "gno.land/r/zenao/users/u516", "gno.land/r/zenao/users/u523", "gno.land/r/zenao/users/u544", "gno.land/r/zenao/users/u545", "gno.land/r/zenao/users/u546", "gno.land/r/zenao/users/u547", "gno.land/r/zenao/users/u558", "gno.land/r/zenao/users/u559", "gno.land/r/zenao/users/u561", "gno.land/r/zenao/users/u562", "gno.land/r/zenao/users/u563", "gno.land/r/zenao/users/u564", "gno.land/r/zenao/users/u565", "gno.land/r/zenao/users/u566", "gno.land/r/zenao/users/u567", "gno.land/r/zenao/users/u568", "gno.land/r/zenao/users/u569", "gno.land/r/zenao/users/u570", "gno.land/r/zenao/users/u571", "gno.land/r/zenao/users/u572", "gno.land/r/zenao/users/u573", "gno.land/r/zenao/users/u575", "gno.land/r/zenao/users/u577", "gno.land/r/zenao/users/u579", "gno.land/r/zenao/users/u580", "gno.land/r/zenao/users/u581", "gno.land/r/zenao/users/u582", "gno.land/r/zenao/users/u583", "gno.land/r/zenao/users/u584", "gno.land/r/zenao/users/u585", "gno.land/r/zenao/users/u586", "gno.land/r/zenao/users/u587", "gno.land/r/zenao/users/u588", "gno.land/r/zenao/users/u589", "gno.land/r/zenao/users/u591", "gno.land/r/zenao/users/u592", "gno.land/r/zenao/users/u593", "gno.land/r/zenao/users/u594", "gno.land/r/zenao/users/u595", "gno.land/r/zenao/users/u596", "gno.land/r/zenao/users/u597", "gno.land/r/zenao/users/u599", "gno.land/r/zenao/users/u600", "gno.land/r/zenao/users/u602", "gno.land/r/zenao/users/u603", "gno.land/r/zenao/users/u604", "gno.land/r/zenao/users/u605", "gno.land/r/zenao/users/u606", "gno.land/r/zenao/users/u607", "gno.land/r/zenao/users/u16", "gno.land/r/zenao/users/u26", "gno.land/r/zenao/users/u98", "gno.land/r/zenao/users/u1"},
32		Events:           []string{"gno.land/r/zenao/events/e53", "gno.land/r/zenao/events/e62"},
33		DisplayName:      "#DANCERS CLUB 🪩",
34		Description:      "---\n{\n  \"shortDescription\": \"Dance, Talk and Connect\",\n  \"portfolio\": [\n    {\n      \"type\": \"image\",\n      \"name\": \"Dancers Club - 251017.jpg\",\n      \"uri\": \"ipfs://bafybeigdfuva5wpb2mli4y34ngybscvdik5y7q75ijub2ejnpxqzlrubcm\",\n      \"uploadedAt\": \"2025-10-20T13:29:46.678Z\",\n      \"id\": \"aacf2a90-1acb-4eab-afce-a0810cc0533f\"\n    }\n  ],\n  \"socialMediaLinks\": [\n    {\n      \"url\": \"https://www.instagram.com/samourai.tv/\"\n    }\n  ]\n}\n---\nDancers Club est un rendez-vous parisien créé par Samouraï Coop, où danse, musique et partage se rencontrent dans un cadre convivial et intimiste. L’événement aura lieu une fois par mois, offrant à chacune et chacun la possibilité de se retrouver autour de la danse, de rencontrer la communauté et de profiter d’un moment chaleureux et festif. Que tu sois danseur·euse confirmé·e ou simple curieux·se, l’objectif est de bouger, échanger et partager sa passion dans un environnement accueillant et inspirant.\nProchaine dates : \n- 21 novembre 2025\n- 12 décembre 2025\n",
35		AvatarURI:        "ipfs://bafkreigpx3swtano2krpmwtnsuz7ky4ohg6pysprm3ovn2zrtmw3dowy5a",
36		BannerURI:        "ipfs://bafybeic6zfyrzqkbouul3yg5gkxyjncexxtlloaoxgd3qxx5hvvwbt5ole",
37		GetProfileString: profile.GetStringField,
38		SetProfileString: profile.SetStringField,
39		CrossFn: crossFn,
40		SetImplemFn: setImplem,
41		FeedId: feedId,
42		PrivateVarName: "community",
43	}
44	community = communities.NewCommunity(&conf)
45	communityreg.Register(cross, func() *zenaov1.CommunityInfo { return community.Info() })
46}
47
48func Vote(_ realm, proposalID uint64, vote daocond.Vote) {
49	localDAO.Vote(proposalID, vote)
50}
51
52func Execute(_ realm, proposalID uint64) {
53	localDAO.Execute(proposalID)
54}
55
56func Render(path string) string {
57	return localDAO.Render(path)
58}
59
60func feedAuth() (string, bool) {
61	caller := community.DAOPrivate.CallerID() // XXX: this should be upgradable
62	return caller, basedao.MustGetMembersViewExtension(localDAO).IsMember(caller)
63}
64
65func crossFn(_ realm, cb func()) {
66	cb()
67}
68
69func setImplem(newLocalDAO daokit.DAO, newDAO daokit.DAO) {
70	localDAO, DAO = newLocalDAO, newDAO
71}