119602: Allow resetting accessibility settings

This commit is contained in:
Andreas Awouters
2024-11-22 15:54:21 +01:00
parent b16cec631d
commit cae13942e2
4 changed files with 36 additions and 6 deletions

View File

@@ -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<boolean> {
this.setSettingsInCookie({});
return this.setSettingsInAuthenticatedUserMetadata({});
}
getPlaceholder(setting: AccessibilitySetting): string {
switch (setting) {
case AccessibilitySetting.NotificationTimeOut:

View File

@@ -54,9 +54,15 @@
</div>
</div>
<button type="submit" (click)="saveSettings()" class="btn btn-primary">
{{ 'info.accessibility-settings.submit' | translate }}
</button>
<div role="group">
<button type="submit" (click)="saveSettings()" class="btn btn-primary mr-2">
{{ 'info.accessibility-settings.submit' | translate }}
</button>
<button type="reset" (click)="resetSettings()" class="btn btn-warning">
{{ 'info.accessibility-settings.reset' | translate }}
</button>
</div>
</form>
</div>

View File

@@ -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();
});
}
}

View File

@@ -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",