diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.html
index 472c6388b..c2ae06648 100644
--- a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions-screen/permissions-screen.component.html
@@ -1,6 +1,6 @@
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 05d293fe1..4dcf15a27 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
@@ -1,4 +1,4 @@
-import { ChangeDetectionStrategy, Component } from '@angular/core';
+import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';
import {
getCurrentUser,
IqserPermissionsService,
@@ -15,21 +15,19 @@ 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 { firstValueFrom } from 'rxjs';
-import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
+import { Subscription } from 'rxjs';
import { tap } from 'rxjs/operators';
import { permissionsTranslations } from '@translations/permissions-translations';
import { RouterHistoryService } from '@services/router-history.service';
import { ROLES } from '@users/roles';
-@UntilDestroy()
@Component({
templateUrl: './permissions-screen.component.html',
styleUrls: ['./permissions-screen.component.scss'],
providers: listingProvidersFactory(PermissionsScreenComponent),
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class PermissionsScreenComponent extends ListingComponent {
+export class PermissionsScreenComponent extends ListingComponent implements OnDestroy {
readonly roles = ROLES;
readonly currentUser = getCurrentUser();
readonly translations = permissionsTranslations;
@@ -37,6 +35,7 @@ export class PermissionsScreenComponent extends ListingComponent this.entitiesService.setEntities(permissions)))
- .pipe(untilDestroyed(this))
.subscribe();
}
async togglePermission(targetPermission: string, changedPermission: string): Promise {
this._loadingService.start();
- await firstValueFrom(this._entityPermissionsService.togglePermission(this.targetObject, targetPermission, changedPermission));
+ await this._entityPermissionsService.togglePermission(this.targetObject, targetPermission, changedPermission);
this._loadingService.stop();
}
+
+ ngOnDestroy(): void {
+ this.#subscription.unsubscribe();
+ }
}
diff --git a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts
index 1d2a4f0d0..f83e6ad48 100644
--- a/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/permissions/permissions.module.ts
@@ -1,17 +1,24 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
-import { SharedModule } from '@shared/shared.module';
import { PermissionsScreenComponent } from './permissions-screen/permissions-screen.component';
import { ConfigService } from './config.service';
import { TranslateModule } from '@ngx-translate/core';
import { IqserHelpModeModule, IqserListingModule } from '@iqser/common-ui';
+import { MatLegacySlideToggleModule } from '@angular/material/legacy-slide-toggle';
const routes = [{ path: '', component: PermissionsScreenComponent }];
@NgModule({
declarations: [PermissionsScreenComponent],
- imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IqserListingModule, IqserHelpModeModule],
+ imports: [
+ RouterModule.forChild(routes),
+ CommonModule,
+ TranslateModule,
+ IqserListingModule,
+ IqserHelpModeModule,
+ MatLegacySlideToggleModule,
+ ],
providers: [ConfigService],
})
export class PermissionsModule {}
diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
index 3b050659c..b1296d397 100644
--- a/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
+++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
@@ -1,23 +1,22 @@
-import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnChanges } from '@angular/core';
+import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
-import { BehaviorSubject, filter } from 'rxjs';
+import { BehaviorSubject, filter, Subscription } from 'rxjs';
import { switchMap, tap } from 'rxjs/operators';
-import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
import { AnnotationsListingService } from '../../services/annotations-listing.service';
-@UntilDestroy()
@Component({
selector: 'redaction-annotation-reference [annotation]',
templateUrl: './annotation-reference.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class AnnotationReferenceComponent implements OnChanges {
+export class AnnotationReferenceComponent implements OnChanges, OnDestroy {
@Input() annotation: AnnotationWrapper;
@HostBinding('class.active') isSelected = false;
- private readonly _annotationChanged$ = new BehaviorSubject(undefined);
+ readonly #annotationChanged$ = new BehaviorSubject(undefined);
+ readonly #subscription: Subscription;
constructor(private readonly _listingService: AnnotationsListingService, private readonly _changeRef: ChangeDetectorRef) {
- this._annotationChanged$
+ this.#subscription = this.#annotationChanged$
.pipe(
filter(annotation => !!annotation),
switchMap(annotation => this._listingService.isSelected$(annotation)),
@@ -26,11 +25,14 @@ export class AnnotationReferenceComponent implements OnChanges {
this._changeRef.markForCheck();
}),
)
- .pipe(untilDestroyed(this))
.subscribe();
}
ngOnChanges(): void {
- this._annotationChanged$.next(this.annotation);
+ this.#annotationChanged$.next(this.annotation);
+ }
+
+ ngOnDestroy(): void {
+ this.#subscription.unsubscribe();
}
}
diff --git a/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts b/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts
index da9756a7f..a1a2d0cb6 100644
--- a/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts
+++ b/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts
@@ -1,7 +1,7 @@
import { inject, Injectable } from '@angular/core';
import { GenericService, mapEach } from '@iqser/common-ui';
import { IPermissionsMapping, PermissionsMapping } from '@red/domain';
-import { Observable } from 'rxjs';
+import { firstValueFrom, Observable } from 'rxjs';
import { switchMap, tap } from 'rxjs/operators';
import { PermissionsConfigurationMapService } from './permissions-configuration-map.service';
import { PermissionsMapService } from './permissions-map.service';
@@ -32,7 +32,7 @@ export class EntityPermissionsService extends GenericService {
+ async togglePermission(targetObject: string, targetPermission: string, changedPermission: string): Promise {
const config = this.#permissionsConfigurationMapService.get(targetObject);
const targetPermissionConfig = config.find(p => p.searchKey === targetPermission);
const permissions = this.#permissionsMapService.get(targetObject);
@@ -44,7 +44,8 @@ export class EntityPermissionsService extends GenericService p.name === changedPermission);
currentTargetPermissionValues.mappedPermissions.push(permission);
}
- return this._post(permissions, `${this._defaultModelPath}/${targetObject}`).pipe(switchMap(() => this.loadFor(targetObject)));
+ const request = this._post(permissions, `${this._defaultModelPath}/${targetObject}`);
+ return firstValueFrom(request.pipe(switchMap(() => this.loadFor(targetObject))));
}
#addMissingPermissions(mappings: PermissionsMapping[], targetObject: string): void {
diff --git a/libs/common-ui b/libs/common-ui
index bf325c2c0..36c74bd8a 160000
--- a/libs/common-ui
+++ b/libs/common-ui
@@ -1 +1 @@
-Subproject commit bf325c2c09da901aebafa7794997a3d3cfb8765d
+Subproject commit 36c74bd8a2a04bcfdf487668910eac386ae2e4eb
diff --git a/package.json b/package.json
index 926b387b4..d3ffb810d 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,6 @@
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@materia-ui/ngx-monaco-editor": "^6.0.0",
"@messageformat/core": "^3.0.1",
- "@ngneat/until-destroy": "^9.2.0",
"@ngx-translate/core": "^14.0.0",
"@ngx-translate/http-loader": "^7.0.0",
"@nrwl/angular": "15.3.3",
diff --git a/yarn.lock b/yarn.lock
index 1c9f36879..ece21d1fd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2722,13 +2722,6 @@
dependencies:
make-plural "^7.0.0"
-"@ngneat/until-destroy@^9.2.0":
- version "9.2.2"
- resolved "https://registry.yarnpkg.com/@ngneat/until-destroy/-/until-destroy-9.2.2.tgz#ac6f954610fc7ea5d4a094ed4de9db59513b810f"
- integrity sha512-pD5idTgUdF0XZMuaV1n0BZTnE2BvxymutoXhwfZbO3uxjh63wS6Pzzzwv+pkXalKhuSwdf6uA1gRx7DOvlj/Kw==
- dependencies:
- tslib "^2.3.0"
-
"@ngtools/webpack@15.0.4":
version "15.0.4"
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-15.0.4.tgz#c1fe2feeab9f7933ef3e76682b26e11d8cd02423"