From 8a4adcca542708b3a5cca7aa3ce32b3bdb3432ba Mon Sep 17 00:00:00 2001 From: MikaelVallenet Date: Sat, 28 Dec 2024 18:21:52 +0100 Subject: [PATCH] feat: add dao kind in dao registry contract --- gno/r/dao_realm/dao_realm.gno | 2 +- gno/r/dao_roles_realm.gno/dao_roles_realm.gno | 2 +- packages/utils/gnodao/deploy.ts | 4 +- .../gnodao/generateMembershipDAOSource.ts | 22 ++++---- .../utils/gnodao/generateRolesDAOSource.ts | 56 +++++++++---------- 5 files changed, 43 insertions(+), 43 deletions(-) diff --git a/gno/r/dao_realm/dao_realm.gno b/gno/r/dao_realm/dao_realm.gno index c9be11cc4d..feb3c564f0 100644 --- a/gno/r/dao_realm/dao_realm.gno +++ b/gno/r/dao_realm/dao_realm.gno @@ -94,7 +94,7 @@ func RegisterSelf() { panic("already registered") } - dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "DAO Realm", "Default testing DAO", "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?w=1080&fit=max") + dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "DAO Realm", "Default testing DAO", "membership", "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?w=1080&fit=max") registered = true } diff --git a/gno/r/dao_roles_realm.gno/dao_roles_realm.gno b/gno/r/dao_roles_realm.gno/dao_roles_realm.gno index f44253c377..84d423f289 100644 --- a/gno/r/dao_roles_realm.gno/dao_roles_realm.gno +++ b/gno/r/dao_roles_realm.gno/dao_roles_realm.gno @@ -105,7 +105,7 @@ func RegisterSelf() { panic("already registered") } - dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "DAO Realm", "Default testing DAO", "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?w=1080&fit=max") + dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "DAO Realm", "Default testing DAO", "roles", "https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?w=1080&fit=max") registered = true } diff --git a/packages/utils/gnodao/deploy.ts b/packages/utils/gnodao/deploy.ts index 347c45bc24..ed5a243af3 100644 --- a/packages/utils/gnodao/deploy.ts +++ b/packages/utils/gnodao/deploy.ts @@ -1,7 +1,7 @@ -import { generateMembershipDAOSource } from "./generateMembershipDAOSource"; -import { generateRolesDAOSource } from "./generateRolesDAOSource"; import { adenaAddPkg } from "../gno"; import { DaoType } from "../types/organizations"; +import { generateMembershipDAOSource } from "./generateMembershipDAOSource"; +import { generateRolesDAOSource } from "./generateRolesDAOSource"; interface GnoDAOMember { address: string; diff --git a/packages/utils/gnodao/generateMembershipDAOSource.ts b/packages/utils/gnodao/generateMembershipDAOSource.ts index b9d3ae7e92..9e5e192509 100644 --- a/packages/utils/gnodao/generateMembershipDAOSource.ts +++ b/packages/utils/gnodao/generateMembershipDAOSource.ts @@ -1,5 +1,5 @@ -import { GnoDAOConfig } from "./deploy"; import { mustGetGnoNetwork } from "../../networks"; +import { GnoDAOConfig } from "./deploy"; // TODO: Allow the role modules to be optional and don't use in MembershipDAO export const generateMembershipDAOSource = ( @@ -33,11 +33,11 @@ export const generateMembershipDAOSource = ( votingModuleFactory := func(core dao_interfaces.IDAOCore) dao_interfaces.IVotingModule { group = voting_group.NewVotingGroup() ${conf.initialMembers - .map( - (member) => - `group.SetMemberPower("${member.address}", ${member.weight})`, - ) - .join("\n\t")} + .map( + (member) => + `group.SetMemberPower("${member.address}", ${member.weight})`, + ) + .join("\n\t")} return group } @@ -46,11 +46,11 @@ export const generateMembershipDAOSource = ( proposalModulesFactories := []dao_interfaces.ProposalModuleFactory{ func(core dao_interfaces.IDAOCore) dao_interfaces.IProposalModule { tt := proposal_single.PercentageThresholdPercent(${Math.ceil( - conf.thresholdPercent * 100, - )}) // ${Math.ceil(conf.thresholdPercent * 100) / 100}% + conf.thresholdPercent * 100, + )}) // ${Math.ceil(conf.thresholdPercent * 100) / 100}% tq := proposal_single.PercentageThresholdPercent(${Math.ceil( - conf.quorumPercent * 100, - )}) // ${Math.ceil(conf.quorumPercent * 100) / 100}% + conf.quorumPercent * 100, + )}) // ${Math.ceil(conf.quorumPercent * 100) / 100}% return proposal_single.NewDAOProposalSingle(core, &proposal_single.DAOProposalSingleOpts{ MaxVotingPeriod: dao_utils.DurationTime(time.Second * ${conf.maxVotingPeriodSeconds}), Threshold: &proposal_single.ThresholdThresholdQuorum{ @@ -82,7 +82,7 @@ export const generateMembershipDAOSource = ( profile.SetStringField(profile.Bio, "${conf.description}") profile.SetStringField(profile.Avatar, "${conf.imageURI}") - dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "${conf.displayName}", "${conf.description}", "${conf.imageURI}") + dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "${conf.displayName}", "${conf.description}", "memberships", "${conf.imageURI}") } func Render(path string) string { diff --git a/packages/utils/gnodao/generateRolesDAOSource.ts b/packages/utils/gnodao/generateRolesDAOSource.ts index 2dfafa3844..645cd3c0eb 100644 --- a/packages/utils/gnodao/generateRolesDAOSource.ts +++ b/packages/utils/gnodao/generateRolesDAOSource.ts @@ -1,5 +1,5 @@ -import { GnoDAOConfig } from "./deploy"; import { mustGetGnoNetwork } from "../../networks"; +import { GnoDAOConfig } from "./deploy"; export const generateRolesDAOSource = ( networkId: string, @@ -35,33 +35,33 @@ var ( func init() { roles = dao_roles_group.NewRolesGroup() ${(conf.roles ?? []) - .map( - (role) => - `roles.NewRoleJSON("${role.name}", "[${(role.resources ?? []) - .map( - (resource) => - `{\\"resource\\": \\"${resource}\\", \\"power\\": \\"999\\"}`, - ) - .join(", ")}]")`, - ) - .join("\n\t")} + .map( + (role) => + `roles.NewRoleJSON("${role.name}", "[${(role.resources ?? []) + .map( + (resource) => + `{\\"resource\\": \\"${resource}\\", \\"power\\": \\"999\\"}`, + ) + .join(", ")}]")`, + ) + .join("\n\t")} ${conf.initialMembers - .filter((member) => member.roles.length > 0) - .map((member) => - member.roles - .map((role) => `roles.GrantRole("${member.address}", "${role}")`) - .join("\n\t"), - ) - .join("\n\t")} + .filter((member) => member.roles.length > 0) + .map((member) => + member.roles + .map((role) => `roles.GrantRole("${member.address}", "${role}")`) + .join("\n\t"), + ) + .join("\n\t")} votingModuleFactory := func(core dao_interfaces.IDAOCore) dao_interfaces.IVotingModule { group = voting_group.NewRolesVotingGroup(roles) ${conf.initialMembers - .map( - (member) => - `group.SetMemberPower("${member.address}", ${member.weight})`, - ) - .join("\n\t")} + .map( + (member) => + `group.SetMemberPower("${member.address}", ${member.weight})`, + ) + .join("\n\t")} return group } @@ -71,11 +71,11 @@ func init() { proposalModulesFactories := []dao_interfaces.ProposalModuleFactory{ func(core dao_interfaces.IDAOCore) dao_interfaces.IProposalModule { tt := proposal_single.PercentageThresholdPercent(${Math.ceil( - conf.thresholdPercent * 100, - )}) // ${Math.ceil(conf.thresholdPercent * 100) / 100}% + conf.thresholdPercent * 100, + )}) // ${Math.ceil(conf.thresholdPercent * 100) / 100}% tq := proposal_single.PercentageThresholdPercent(${Math.ceil( - conf.quorumPercent * 100, - )}) // ${Math.ceil(conf.quorumPercent * 100) / 100}% + conf.quorumPercent * 100, + )}) // ${Math.ceil(conf.quorumPercent * 100) / 100}% return proposal_single.NewDAOProposalSingle(core, &proposal_single.DAOProposalSingleOpts{ MaxVotingPeriod: dao_utils.DurationTime(time.Second * ${conf.maxVotingPeriodSeconds}), Threshold: &proposal_single.ThresholdThresholdQuorum{ @@ -107,7 +107,7 @@ func init() { profile.SetStringField(profile.Bio, "${conf.description}") profile.SetStringField(profile.Avatar, "${conf.imageURI}") - dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "${conf.displayName}", "${conf.description}", "${conf.imageURI}") + dao_registry.Register(func() dao_interfaces.IDAOCore { return daoCore }, "${conf.displayName}", "${conf.description}", "roles", "${conf.imageURI}") } func Render(path string) string {