@river-build/web3
Version:
Dapps for our Space and Registry contracts
94 lines • 3.8 kB
JavaScript
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