From 5cf539ef14b1cd3d3d8940a0241bd56a39aa37a2 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 20 Feb 2023 13:47:15 +0200 Subject: [PATCH] RED-6225, fix permission toggles not updating when leaving page. --- .../permissions-screen/permissions-screen.component.ts | 8 ++++++-- .../src/lib/permissions/permissions-mapping.model.ts | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts index 4dcf15a27..9b5fb8330 100644 --- a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.ts @@ -15,7 +15,7 @@ import { EntityPermissionsService } from '@services/entity-permissions/entity-pe import { ActivatedRoute } from '@angular/router'; import { PermissionsMapService } from '@services/entity-permissions/permissions-map.service'; import { PermissionsConfigurationMapService } from '@services/entity-permissions/permissions-configuration-map.service'; -import { Subscription } from 'rxjs'; +import { map, Subscription } from 'rxjs'; import { tap } from 'rxjs/operators'; import { permissionsTranslations } from '@translations/permissions-translations'; import { RouterHistoryService } from '@services/router-history.service'; @@ -57,7 +57,11 @@ export class PermissionsScreenComponent extends ListingComponent this.entitiesService.setEntities(permissions))) + .pipe( + // force update internal mappings set in constructor + map(permissions => permissions.map(p => new PermissionsMapping(p))), + tap(permissions => this.entitiesService.setEntities(permissions)), + ) .subscribe(); } diff --git a/libs/red-domain/src/lib/permissions/permissions-mapping.model.ts b/libs/red-domain/src/lib/permissions/permissions-mapping.model.ts index e0dcd2920..2975be340 100644 --- a/libs/red-domain/src/lib/permissions/permissions-mapping.model.ts +++ b/libs/red-domain/src/lib/permissions/permissions-mapping.model.ts @@ -8,14 +8,14 @@ export class PermissionsMapping extends Entity implements I readonly targetPermission: IPermission; readonly sort: number; - readonly #currentValuesMap = new Map(); + readonly #currentValues: string[] = []; constructor(permissionsMapping: IPermissionsMapping) { super(permissionsMapping); this.mappedPermissions = permissionsMapping.mappedPermissions; this.targetPermission = permissionsMapping.targetPermission; this.sort = this.targetPermission.sort; - this.mappedPermissions.forEach(permission => this.#currentValuesMap.set(permission.name, true)); + this.#currentValues = this.mappedPermissions.map(permission => permission.name); } get id(): string { @@ -27,6 +27,6 @@ export class PermissionsMapping extends Entity implements I } getValue(permissionName: string): boolean { - return this.#currentValuesMap.has(permissionName); + return this.#currentValues.includes(permissionName); } }