fix(CommunityPermissions): Fix token criteria updates in the permissions model

Re-create the token criteria and include all items whenever the model changes.

The previous perf optimisation fix filtered the items where the criteriaMet doesn't change.
This commit is contained in:
Alex Jbanca 2024-04-17 16:56:26 +03:00 committed by Jonathan Rainville
parent 75e1d3151f
commit a9a83df301
2 changed files with 9 additions and 7 deletions

View File

@ -933,12 +933,13 @@ proc updateTokenPermissionModel*(self: Module, permissions: Table[string, CheckP
var updatedTokenCriteriaItems: seq[TokenCriteriaItem] = @[] var updatedTokenCriteriaItems: seq[TokenCriteriaItem] = @[]
var permissionSatisfied = true var permissionSatisfied = true
var aCriteriaChanged = false
for index, tokenCriteriaItem in tokenPermissionItem.getTokenCriteria().getItems(): for index, tokenCriteriaItem in tokenPermissionItem.getTokenCriteria().getItems():
let criteriaMet = criteriaResult.criteria[index] let criteriaMet = criteriaResult.criteria[index]
if tokenCriteriaItem.criteriaMet == criteriaMet: if tokenCriteriaItem.criteriaMet != criteriaMet:
continue aCriteriaChanged = true
let updatedTokenCriteriaItem = initTokenCriteriaItem( let updatedTokenCriteriaItem = initTokenCriteriaItem(
tokenCriteriaItem.symbol, tokenCriteriaItem.symbol,
@ -954,7 +955,7 @@ proc updateTokenPermissionModel*(self: Module, permissions: Table[string, CheckP
updatedTokenCriteriaItems.add(updatedTokenCriteriaItem) updatedTokenCriteriaItems.add(updatedTokenCriteriaItem)
if updatedTokenCriteriaItems.len == 0: if not aCriteriaChanged:
continue continue
thereWasAnUpdate = true thereWasAnUpdate = true

View File

@ -899,13 +899,13 @@ proc applyPermissionResponse*(self: Module, communityId: string, permissions: Ta
var updatedTokenCriteriaItems: seq[TokenCriteriaItem] = @[] var updatedTokenCriteriaItems: seq[TokenCriteriaItem] = @[]
var permissionSatisfied = true var permissionSatisfied = true
var aCriteriaChanged = false
for index, tokenCriteriaItem in tokenPermissionItem.getTokenCriteria().getItems(): for index, tokenCriteriaItem in tokenPermissionItem.getTokenCriteria().getItems():
let criteriaMet = criteriaResult.criteria[index] let criteriaMet = criteriaResult.criteria[index]
if tokenCriteriaItem.criteriaMet == criteriaMet: if tokenCriteriaItem.criteriaMet != criteriaMet:
continue aCriteriaChanged = true
let updatedTokenCriteriaItem = initTokenCriteriaItem( let updatedTokenCriteriaItem = initTokenCriteriaItem(
tokenCriteriaItem.symbol, tokenCriteriaItem.symbol,
@ -921,8 +921,9 @@ proc applyPermissionResponse*(self: Module, communityId: string, permissions: Ta
updatedTokenCriteriaItems.add(updatedTokenCriteriaItem) updatedTokenCriteriaItems.add(updatedTokenCriteriaItem)
if updatedTokenCriteriaItems.len == 0: if not aCriteriaChanged:
continue continue
let updatedTokenPermissionItem = initTokenPermissionItem( let updatedTokenPermissionItem = initTokenPermissionItem(
tokenPermissionItem.id, tokenPermissionItem.id,
tokenPermissionItem.`type`, tokenPermissionItem.`type`,