UNPKG

@river-build/web3

Version:

Dapps for our Space and Registry contracts

94 lines 3.8 kB
import { EntitlementModuleType, } from './ContractTypes'; import { createRuleEntitlementStruct, createRuleEntitlementV2Struct, createUserEntitlementStruct, convertRuleDataV2ToV1, } from './ConvertersEntitlements'; import { decodeRuleDataV2 } from './entitlement'; export async function createLegacyEntitlementStruct(spaceIn, users, ruleData) { const space = spaceIn; // figure out the addresses for each entitlement module const entitlementModules = await space.Entitlements.read.getEntitlements(); let userEntitlementAddress; let ruleEntitlementAddress; for (const module of entitlementModules) { switch (module.moduleType) { case EntitlementModuleType.UserEntitlement: userEntitlementAddress = module.moduleAddress; break; case EntitlementModuleType.RuleEntitlement: ruleEntitlementAddress = module.moduleAddress; break; } } if (!userEntitlementAddress) { throw new Error('User entitlement module address not found.'); } if (!ruleEntitlementAddress) { throw new Error('Rule entitlement module address not found.'); } // create the entitlements array const entitlements = []; // create the user entitlement if (users.length) { const userEntitlement = createUserEntitlementStruct(userEntitlementAddress, users); entitlements.push(userEntitlement); } if (ruleData.operations.length > 0) { const ruleEntitlement = createRuleEntitlementStruct(ruleEntitlementAddress, ruleData); entitlements.push(ruleEntitlement); } // return the converted entitlements return entitlements; } export async function createEntitlementStruct(spaceIn, users, ruleData) { const space = spaceIn; // figure out the addresses for each entitlement module const entitlementModules = await space.Entitlements.read.getEntitlements(); let userEntitlementAddress; let ruleEntitlementAddress; for (const module of entitlementModules) { switch (module.moduleType) { case EntitlementModuleType.UserEntitlement: userEntitlementAddress = module.moduleAddress; break; case EntitlementModuleType.RuleEntitlementV2: ruleEntitlementAddress = module.moduleAddress; break; } } if (!userEntitlementAddress) { throw new Error('User entitlement module address not found.'); } if (!ruleEntitlementAddress) { throw new Error('Rule entitlement V2 module address not found.'); } // create the entitlements array const entitlements = []; // create the user entitlement if (users.length) { const userEntitlement = createUserEntitlementStruct(userEntitlementAddress, users); entitlements.push(userEntitlement); } if (ruleData.operations.length > 0) { const ruleEntitlement = createRuleEntitlementV2Struct(ruleEntitlementAddress, ruleData); entitlements.push(ruleEntitlement); } // return the converted entitlements return entitlements; } export function toPermissions(permissions) { return permissions.map((p) => { const perm = p; return perm; }); } export function downgradeMembershipStruct(membership) { return { requirements: { ruleData: convertRuleDataV2ToV1(decodeRuleDataV2(membership.requirements.ruleData)), everyone: membership.requirements.everyone, users: membership.requirements.users, syncEntitlements: membership.requirements.syncEntitlements, }, permissions: membership.permissions, settings: membership.settings, }; } //# sourceMappingURL=ConvertersRoles.js.map