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 9b5fb8330..f4f6672c7 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,8 +15,8 @@ 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 { map, Subscription } from 'rxjs'; -import { tap } from 'rxjs/operators'; +import { interval, map, Subscription } from 'rxjs'; +import { switchMap, tap } from 'rxjs/operators'; import { permissionsTranslations } from '@translations/permissions-translations'; import { RouterHistoryService } from '@services/router-history.service'; import { ROLES } from '@users/roles'; @@ -35,7 +35,7 @@ export class PermissionsScreenComponent extends ListingComponent permissions.map(p => new PermissionsMapping(p))), - tap(permissions => this.entitiesService.setEntities(permissions)), - ) - .subscribe(); + this.#subscription.add( + this._permissionsMapService + .get$(this.targetObject) + .pipe( + // force update internal mappings set in constructor + map(permissions => permissions.map(p => new PermissionsMapping(p))), + tap(permissions => this.entitiesService.setEntities(permissions)), + ) + .subscribe(), + ); + this.#subscription.add( + interval(5000) + .pipe(switchMap(() => this._entityPermissionsService.loadFor(this.targetObject))) + .subscribe(), + ); } async togglePermission(targetPermission: string, changedPermission: string): Promise {