From cae13942e297065276d065ef3cf22547105fa52e Mon Sep 17 00:00:00 2001 From: Andreas Awouters Date: Fri, 22 Nov 2024 15:54:21 +0100 Subject: [PATCH] 119602: Allow resetting accessibility settings --- .../accessibility-settings.service.ts | 16 +++++++++++++--- .../accessibility-settings.component.html | 12 +++++++++--- .../accessibility-settings.component.ts | 10 ++++++++++ src/assets/i18n/en.json5 | 4 ++++ 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/app/accessibility/accessibility-settings.service.ts b/src/app/accessibility/accessibility-settings.service.ts index 8dd90ef154..e86742d76d 100644 --- a/src/app/accessibility/accessibility-settings.service.ts +++ b/src/app/accessibility/accessibility-settings.service.ts @@ -2,13 +2,14 @@ import { Injectable } from '@angular/core'; import { Observable, of, switchMap } from 'rxjs'; import { map, take } from 'rxjs/operators'; import { CookieService } from '../core/services/cookie.service'; -import { hasValue, isNotEmpty, isNotEmptyOperator } from '../shared/empty.util'; +import { hasValue, isNotEmpty } from '../shared/empty.util'; import { AuthService } from '../core/auth/auth.service'; import { EPerson } from '../core/eperson/models/eperson.model'; import { EPersonDataService } from '../core/eperson/eperson-data.service'; import { getFirstCompletedRemoteData } from '../core/shared/operators'; import cloneDeep from 'lodash/cloneDeep'; import { environment } from '../../environments/environment'; +import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; /** * Name of the cookie used to store the settings locally @@ -198,8 +199,8 @@ export class AccessibilitySettingsService { return this.ePersonService.createPatchFromCache(user).pipe( take(1), - isNotEmptyOperator(), - switchMap(operations => this.ePersonService.patch(user, operations)), + switchMap(operations => + isNotEmpty(operations) ? this.ePersonService.patch(user, operations) : createSuccessfulRemoteDataObject$({})), getFirstCompletedRemoteData(), map(rd => rd.hasSucceeded), ); @@ -216,6 +217,15 @@ export class AccessibilitySettingsService { } } + /** + * Clears all settings in the cookie and attempts to clear settings in metadata. + * Emits true if settings in metadata were cleared and false otherwise. + */ + clearSettings(): Observable { + this.setSettingsInCookie({}); + return this.setSettingsInAuthenticatedUserMetadata({}); + } + getPlaceholder(setting: AccessibilitySetting): string { switch (setting) { case AccessibilitySetting.NotificationTimeOut: diff --git a/src/app/info/accessibility-settings/accessibility-settings.component.html b/src/app/info/accessibility-settings/accessibility-settings.component.html index 355d3c9409..43371d3336 100644 --- a/src/app/info/accessibility-settings/accessibility-settings.component.html +++ b/src/app/info/accessibility-settings/accessibility-settings.component.html @@ -54,9 +54,15 @@ - +
+ + +
+ diff --git a/src/app/info/accessibility-settings/accessibility-settings.component.ts b/src/app/info/accessibility-settings/accessibility-settings.component.ts index ea7c853a97..0de18152ee 100644 --- a/src/app/info/accessibility-settings/accessibility-settings.component.ts +++ b/src/app/info/accessibility-settings/accessibility-settings.component.ts @@ -57,4 +57,14 @@ export class AccessibilitySettingsComponent implements OnInit { }); } + /** + * Resets accessibility settings + */ + resetSettings() { + this.settingsService.clearSettings().pipe(take(1)).subscribe(() => { + this.notificationsService.success(null, this.translateService.instant('info.accessibility-settings.reset-notification')); + this.updateFormValues(); + }); + } + } diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index d9533da9c7..69127375cf 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1860,6 +1860,10 @@ "info.accessibility-settings.save-notification.metadata": "Successfully saved settings on the user profile.", + "info.accessibility-settings.reset-notification": "Successfully reset settings.", + + "info.accessibility-settings.reset": "Reset accessibility settings", + "info.accessibility-settings.submit": "Save accessibility settings", "info.accessibility-settings.title": "Accessibility settings",