RED-6225, fix permission toggles not updating when leaving page.

This commit is contained in:
George 2023-02-20 13:47:15 +02:00
parent fa526e9f4a
commit 5cf539ef14
2 changed files with 9 additions and 5 deletions

View File

@ -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<PermissionsMapp
});
this.#subscription = this._permissionsMapService
.get$(this.targetObject)
.pipe(tap(permissions => 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();
}

View File

@ -8,14 +8,14 @@ export class PermissionsMapping extends Entity<IPermissionsMapping> implements I
readonly targetPermission: IPermission;
readonly sort: number;
readonly #currentValuesMap = new Map<string, boolean>();
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<IPermissionsMapping> implements I
}
getValue(permissionName: string): boolean {
return this.#currentValuesMap.has(permissionName);
return this.#currentValues.includes(permissionName);
}
}