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.

(cherry picked from commit a9a83df301)
This commit is contained in:
Alex Jbanca 2024-04-17 16:56:26 +03:00 committed by Alex Jbanca
parent 4a066a2f48
commit 5e33540307
2 changed files with 9 additions and 7 deletions

View File

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

View File

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