diff --git a/apps/red-ui/src/app/modules/account/account-routing.module.ts b/apps/red-ui/src/app/modules/account/account-routing.module.ts
index d0e896a3c..777b82c0c 100644
--- a/apps/red-ui/src/app/modules/account/account-routing.module.ts
+++ b/apps/red-ui/src/app/modules/account/account-routing.module.ts
@@ -4,27 +4,28 @@ import { CompositeRouteGuard } from '@iqser/common-ui';
import { AuthGuard } from '../auth/auth.guard';
import { RedRoleGuard } from '../auth/red-role.guard';
import { AppStateGuard } from '../../state/app-state.guard';
-import { NotificationsScreenComponent } from './screens/notifications/notifications-screen.component';
-import { UserProfileScreenComponent } from './screens/user-profile/user-profile-screen.component';
+import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component';
const routes = [
{ path: '', redirectTo: 'user-profile', pathMatch: 'full' },
{
path: 'user-profile',
- component: UserProfileScreenComponent,
+ component: BaseAccountScreenComponent,
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard],
requiredRoles: ['RED_USER'],
},
+ loadChildren: () => import('./screens/user-profile/user-profile.module').then(m => m.UserProfileModule),
},
{
path: 'notifications',
- component: NotificationsScreenComponent,
+ component: BaseAccountScreenComponent,
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard],
},
+ loadChildren: () => import('./screens/notifications/notifications.module').then(m => m.NotificationsModule),
},
];
diff --git a/apps/red-ui/src/app/modules/account/account-side-nav/account-side-nav.component.ts b/apps/red-ui/src/app/modules/account/account-side-nav/account-side-nav.component.ts
index ee4d86e53..f4cf007ae 100644
--- a/apps/red-ui/src/app/modules/account/account-side-nav/account-side-nav.component.ts
+++ b/apps/red-ui/src/app/modules/account/account-side-nav/account-side-nav.component.ts
@@ -1,5 +1,5 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
-import { Component } from '@angular/core';
+import { ChangeDetectionStrategy, Component } from '@angular/core';
interface NavItem {
readonly label: string;
@@ -10,6 +10,7 @@ interface NavItem {
selector: 'redaction-account-side-nav',
templateUrl: './account-side-nav.component.html',
styleUrls: ['./account-side-nav.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AccountSideNavComponent {
readonly items: NavItem[] = [
diff --git a/apps/red-ui/src/app/modules/account/account.module.ts b/apps/red-ui/src/app/modules/account/account.module.ts
index bc2e1c527..28b2ee431 100644
--- a/apps/red-ui/src/app/modules/account/account.module.ts
+++ b/apps/red-ui/src/app/modules/account/account.module.ts
@@ -3,16 +3,12 @@ import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { AccountRoutingModule } from './account-routing.module';
import { AccountSideNavComponent } from './account-side-nav/account-side-nav.component';
-import { NotificationsScreenComponent } from './screens/notifications/notifications-screen.component';
-import { UserProfileScreenComponent } from './screens/user-profile/user-profile-screen.component';
-
-const screens = [NotificationsScreenComponent, UserProfileScreenComponent];
-
-const components = [AccountSideNavComponent, ...screens];
+import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component';
+import { NotificationPreferencesService } from './services/notification-preferences.service';
@NgModule({
- declarations: [components],
- providers: [],
+ declarations: [AccountSideNavComponent, BaseAccountScreenComponent],
imports: [CommonModule, SharedModule, AccountRoutingModule],
+ providers: [NotificationPreferencesService],
})
export class AccountModule {}
diff --git a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.html b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.html
new file mode 100644
index 000000000..1597a1874
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.html
@@ -0,0 +1,20 @@
+
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.scss b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss
similarity index 64%
rename from apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.scss
rename to apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss
index e145e5430..fd508d3c9 100644
--- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.scss
+++ b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss
@@ -1,15 +1,16 @@
-@use 'variables';
-@use 'common-mixins';
-
-.dialog {
- min-height: unset;
-}
+@use 'apps/red-ui/src/assets/styles/variables';
+@use 'libs/common-ui/src/assets/styles/common-mixins';
.content-container {
background-color: variables.$grey-2;
justify-content: center;
@include common-mixins.scroll-bar;
overflow: auto;
+
+ .dialog {
+ width: var(--width);
+ min-height: unset;
+ }
}
.full-height {
@@ -21,7 +22,3 @@
height: calc(100% + 50px);
z-index: 1;
}
-
-a {
- color: black;
-}
diff --git a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.ts b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.ts
new file mode 100644
index 000000000..c87363a82
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.ts
@@ -0,0 +1,27 @@
+import { ChangeDetectionStrategy, Component, OnInit, ViewContainerRef } from '@angular/core';
+import { Router } from '@angular/router';
+import { notificationsTranslations } from '../translations/notifications-translations';
+
+@Component({
+ selector: 'redaction-base-account-screen',
+ templateUrl: './base-account-screen-component.html',
+ styleUrls: ['./base-account-screen-component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class BaseAccountScreenComponent implements OnInit {
+ readonly translations = notificationsTranslations;
+ path: string;
+
+ constructor(private readonly _router: Router, private readonly _hostRef: ViewContainerRef) {
+ this.path = this._router.url.split('/').pop();
+ }
+
+ ngOnInit(): void {
+ this._setDialogWidth();
+ }
+
+ private _setDialogWidth() {
+ const element = this._hostRef.element.nativeElement as HTMLElement;
+ element.style.setProperty('--width', this.path === 'user-profile' ? 'unset' : '100%');
+ }
+}
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/constants.ts b/apps/red-ui/src/app/modules/account/screens/notifications/constants.ts
new file mode 100644
index 000000000..9f2eb7f6b
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/notifications/constants.ts
@@ -0,0 +1,47 @@
+export const EmailNotificationScheduleTypes = {
+ INSTANT: 'INSTANT',
+ DAILY: 'DAILY',
+ WEEKLY: 'WEEKLY',
+} as const;
+
+export type EmailNotificationScheduleType = keyof typeof EmailNotificationScheduleTypes;
+export const EmailNotificationScheduleTypesValues = Object.values(EmailNotificationScheduleTypes);
+
+export const NotificationCategories = {
+ inAppNotifications: 'inAppNotifications',
+ emailNotifications: 'emailNotifications',
+} as const;
+
+export const NotificationCategoriesValues = Object.values(NotificationCategories);
+
+export const OwnDossiersNotificationsTypes = {
+ dossierStatusChanges: 'dossierStatusChanges',
+ requestToJoinTheDossier: 'requestToJoinTheDossier',
+ documentStatusChanges: 'documentStatusChanges',
+ documentIsSentForApproval: 'documentIsSentForApproval',
+} as const;
+
+export const OwnDossiersNotificationsTypesValues = Object.values(OwnDossiersNotificationsTypes);
+
+export const ReviewerOnDossiersNotificationsTypes = {
+ whenIAmAssignedOnADocument: 'whenIAmAssignedOnADocument',
+ whenIAmUnassignedFromADocument: 'whenIAmUnassignedFromADocument',
+ whenADocumentIsApproved: 'whenADocumentIsApproved',
+} as const;
+
+export const ReviewerOnDossiersNotificationsTypesValues = Object.values(ReviewerOnDossiersNotificationsTypes);
+
+export const ApproverOnDossiersNotificationsTypes = {
+ whenADocumentIsSentForApproval: 'whenADocumentIsSentForApproval',
+ whenADocumentIsAssignedToAReviewer: 'whenADocumentIsAssignedToAReviewer',
+ whenAReviewerIsUnassignedFromADocument: 'whenAReviewerIsUnassignedFromADocument',
+} as const;
+
+export const ApproverOnDossiersNotificationsTypesValues = Object.values(ApproverOnDossiersNotificationsTypes);
+
+export const NotificationGroupsKeys = ['own', 'reviewer', 'approver'];
+export const NotificationGroupsValues = [
+ OwnDossiersNotificationsTypesValues,
+ ReviewerOnDossiersNotificationsTypesValues,
+ ApproverOnDossiersNotificationsTypesValues,
+];
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.html b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.html
deleted file mode 100644
index 059169d07..000000000
--- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.scss
deleted file mode 100644
index e541ddbed..000000000
--- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-@use 'variables';
-@use 'common-mixins';
-
-.content-container {
- background-color: variables.$grey-2;
- justify-content: center;
- @include common-mixins.scroll-bar;
- overflow: auto;
-
- .dialog {
- width: 100%;
- min-height: unset;
-
- .dialog-content {
- flex-direction: column;
-
- .header {
- grid-column: span 2;
- padding: 10px 10px;
- margin-bottom: -1px;
- border-top: 1px solid variables.$separator;
- border-bottom: 1px solid variables.$separator;
- }
-
- .options-content {
- padding: 10px 48px;
-
- .statement {
- opacity: 0.7;
- color: variables.$grey-1;
- font-weight: 500;
- padding: 10px 0;
- }
-
- .radio-container {
- display: flex;
- padding: 10px 0 10px;
- .radio-button {
- display: flex;
- align-items: center;
- padding-right: 30px;
- iqser-round-checkbox {
- margin-right: 8px;
- }
- }
- }
-
- .group {
- padding: 10px 0;
-
- .group-title {
- color: variables.$grey-1;
- font-weight: 600;
- }
-
- .iqser-input-group {
- margin-top: 5px;
- }
- }
- }
- }
- }
-}
-
-.full-height {
- display: flex;
- flex-direction: row;
- position: absolute;
- bottom: 0;
- width: 100%;
- height: calc(100% + 50px);
- z-index: 1;
-}
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html
new file mode 100644
index 000000000..8c76795dc
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html
@@ -0,0 +1,43 @@
+
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss
new file mode 100644
index 000000000..0556bd0c0
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss
@@ -0,0 +1,51 @@
+@use 'apps/red-ui/src/assets/styles/variables';
+@use 'libs/common-ui/src/assets/styles/common-mixins';
+
+.dialog-content {
+ flex-direction: column;
+
+ .header {
+ grid-column: span 2;
+ padding: 10px 10px;
+ margin-bottom: -1px;
+ border-top: 1px solid variables.$separator;
+ border-bottom: 1px solid variables.$separator;
+ }
+
+ .options-content {
+ padding: 10px 48px;
+
+ .statement {
+ opacity: 0.7;
+ color: variables.$grey-1;
+ font-weight: 500;
+ padding: 10px 0;
+ }
+
+ .radio-container {
+ display: flex;
+ padding: 10px 0 10px;
+ .radio-button {
+ display: flex;
+ align-items: center;
+ padding-right: 30px;
+ iqser-round-checkbox {
+ margin-right: 8px;
+ }
+ }
+ }
+
+ .group {
+ padding: 10px 0;
+
+ .group-title {
+ color: variables.$grey-1;
+ font-weight: 600;
+ }
+
+ .iqser-input-group {
+ margin-top: 5px;
+ }
+ }
+ }
+}
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts
similarity index 64%
rename from apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.ts
rename to apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts
index b0ea86c3c..0c810a54e 100644
--- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen.component.ts
+++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts
@@ -1,24 +1,27 @@
-import { Component, OnInit } from '@angular/core';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
-import { notificationsTranslations } from '../../translations/notifications-translations';
-import { NotificationPreferencesService } from '../../../../services/notification-preferences.service';
+import { notificationsTranslations } from '../../../translations/notifications-translations';
+import { NotificationPreferencesService } from '../../../services/notification-preferences.service';
import { LoadingService, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
+import {
+ EmailNotificationScheduleTypesValues,
+ NotificationCategoriesValues,
+ NotificationGroupsKeys,
+ NotificationGroupsValues,
+} from '../constants';
@Component({
selector: 'redaction-notifications-screen',
templateUrl: './notifications-screen.component.html',
styleUrls: ['./notifications-screen.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
})
export class NotificationsScreenComponent implements OnInit {
- readonly emailNotificationTypes: string[] = ['INSTANT', 'DAILY', 'WEEKLY'];
- readonly notificationCategories: string[] = ['inAppNotifications', 'emailNotifications'];
- readonly notificationGroupsKeys: string[] = ['own', 'reviewer', 'approver'];
- readonly notificationGroupsValues: string[][] = [
- ['dossierStatusChanges', 'requestToJoinTheDossier', 'documentStatusChanges', 'documentIsSentForApproval'],
- ['whenIAmAssignedOnADocument', 'whenIAmUnassignedFromADocument', 'whenADocumentIsApproved'],
- ['whenADocumentIsSentForApproval', 'whenADocumentIsAssignedToAReviewer', 'whenAReviewerIsUnassignedFromADocument'],
- ];
+ readonly emailNotificationScheduleTypes = EmailNotificationScheduleTypesValues;
+ readonly notificationCategories = NotificationCategoriesValues;
+ readonly notificationGroupsKeys = NotificationGroupsKeys;
+ readonly notificationGroupsValues = NotificationGroupsValues;
readonly translations = notificationsTranslations;
formGroup: FormGroup;
@@ -28,7 +31,15 @@ export class NotificationsScreenComponent implements OnInit {
private readonly _formBuilder: FormBuilder,
private readonly _loadingService: LoadingService,
private readonly _notificationPreferencesService: NotificationPreferencesService,
- ) {}
+ ) {
+ this.formGroup = this._formBuilder.group({
+ inAppNotificationsEnabled: [undefined],
+ emailNotificationsEnabled: [undefined],
+ emailNotificationType: [undefined],
+ emailNotifications: [undefined],
+ inAppNotifications: [undefined],
+ });
+ }
async ngOnInit(): Promise {
await this._initializeForm();
@@ -75,13 +86,7 @@ export class NotificationsScreenComponent implements OnInit {
this._loadingService.start();
const notificationPreferences = await this._notificationPreferencesService.getNotificationPreferences().toPromise();
- this.formGroup = this._formBuilder.group({
- inAppNotificationsEnabled: [notificationPreferences.inAppNotificationsEnabled],
- emailNotificationsEnabled: [notificationPreferences.emailNotificationsEnabled],
- emailNotificationType: [notificationPreferences.emailNotificationType],
- emailNotifications: [notificationPreferences.emailNotifications],
- inAppNotifications: [notificationPreferences.inAppNotifications],
- });
+ this.formGroup.patchValue(notificationPreferences);
this._loadingService.stop();
}
diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts
new file mode 100644
index 000000000..bc6d3f30a
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from '../../../shared/shared.module';
+import { NotificationsScreenComponent } from './notifications-screen/notifications-screen.component';
+
+const routes = [{ path: '', component: NotificationsScreenComponent }];
+
+@NgModule({
+ declarations: [NotificationsScreenComponent],
+ imports: [RouterModule.forChild(routes), CommonModule, SharedModule],
+})
+export class NotificationsModule {}
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.html b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.html
deleted file mode 100644
index aa7945a3f..000000000
--- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.html
+++ /dev/null
@@ -1,62 +0,0 @@
-
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html
new file mode 100644
index 000000000..25d5a5a44
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html
@@ -0,0 +1,37 @@
+
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss
new file mode 100644
index 000000000..e1573c569
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss
@@ -0,0 +1,3 @@
+a {
+ color: black;
+}
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts
similarity index 87%
rename from apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.ts
rename to apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts
index f43f3db3b..f1a23936a 100644
--- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen.component.ts
+++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts
@@ -1,19 +1,20 @@
-import { Component, OnInit } from '@angular/core';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { languagesTranslations } from '../../translations/languages-translations';
-import { UserService } from '../../../../services/user.service';
-import { PermissionsService } from '../../../../services/permissions.service';
-import { ConfigService } from '../../../../services/config.service';
-import { LanguageService } from '../../../../i18n/language.service';
import { DomSanitizer } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { LoadingService } from '@iqser/common-ui';
import { IProfile } from '@red/domain';
+import { languagesTranslations } from '../../../translations/languages-translations';
+import { PermissionsService } from '../../../../../services/permissions.service';
+import { UserService } from '../../../../../services/user.service';
+import { ConfigService } from '../../../../../services/config.service';
+import { LanguageService } from '../../../../../i18n/language.service';
@Component({
selector: 'redaction-user-profile-screen',
templateUrl: './user-profile-screen.component.html',
styleUrls: ['./user-profile-screen.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
})
export class UserProfileScreenComponent implements OnInit {
formGroup: FormGroup;
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts
new file mode 100644
index 000000000..928581695
--- /dev/null
+++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from '../../../shared/shared.module';
+import { UserProfileScreenComponent } from './user-profile-screen/user-profile-screen.component';
+
+const routes = [{ path: '', component: UserProfileScreenComponent }];
+
+@NgModule({
+ declarations: [UserProfileScreenComponent],
+ imports: [RouterModule.forChild(routes), CommonModule, SharedModule],
+})
+export class UserProfileModule {}
diff --git a/apps/red-ui/src/app/services/notification-preferences.service.ts b/apps/red-ui/src/app/modules/account/services/notification-preferences.service.ts
similarity index 72%
rename from apps/red-ui/src/app/services/notification-preferences.service.ts
rename to apps/red-ui/src/app/modules/account/services/notification-preferences.service.ts
index ecd17e5ae..d4d44a9d5 100644
--- a/apps/red-ui/src/app/services/notification-preferences.service.ts
+++ b/apps/red-ui/src/app/modules/account/services/notification-preferences.service.ts
@@ -1,9 +1,10 @@
import { Injectable, Injector } from '@angular/core';
import { GenericService } from '@iqser/common-ui';
import { Observable, of } from 'rxjs';
-import { UserService } from './user.service';
+import { UserService } from '../../../services/user.service';
import { INotificationPreferences } from '@red/domain';
-import { catchError, map } from 'rxjs/operators';
+import { catchError } from 'rxjs/operators';
+import { EmailNotificationScheduleTypes } from '../screens/notifications/constants';
@Injectable({
providedIn: 'root',
@@ -14,10 +15,7 @@ export class NotificationPreferencesService extends GenericService {
- return super.get().pipe(
- map(notificationPreferences => (Array.isArray(notificationPreferences) ? notificationPreferences[0] : notificationPreferences)),
- catchError(() => of(this._defaultPreferences)),
- );
+ return super.get().pipe(catchError(() => of(this._defaultPreferences)));
}
updateNotificationPreferences(notificationPreferences: INotificationPreferences): Observable {
@@ -26,7 +24,7 @@ export class NotificationPreferencesService extends GenericService