diff --git a/src/services/service.ts b/src/services/service.ts index 8b5f8fc..7ce7ba5 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -691,24 +691,27 @@ export default class Services { return true; } - rolesContainsUs(roles: any): boolean { + rolesContainsUs(roles: Record): boolean { + let us; try { - this.sdkClient.roles_contains_us(JSON.stringify(roles)); + us = this.sdkClient.get_member(); } catch (e) { - return false; + throw e; } - return true; + return this.rolesContainsMember(roles, us.sp_addresses); } - rolesContainsMember(roles: any, member: string[]): boolean { - try { - this.sdkClient.roles_contains_member(JSON.stringify(roles), member); - } catch (e) { - return false; + rolesContainsMember(roles: Record, member: string[]): boolean { + let res = false; + for (const [roleName, roleDef] of Object.entries(roles)) { + for (const otherMember of roleDef.members) { + if (res) { return true } + res = this.compareMembers(member, otherMember.sp_addresses); + } } - return true; + return res; } async dumpWallet() { @@ -1210,7 +1213,7 @@ export default class Services { try { const roles = this.getRoles(process); - if (this.rolesContainsUs(roles)) { + if (roles && this.rolesContainsUs(roles)) { this.myProcesses.add(processId); } } catch (e) {