Skip to content

Commit cae1394

Browse files
committed
119602: Allow resetting accessibility settings
1 parent b16cec6 commit cae1394

4 files changed

Lines changed: 36 additions & 6 deletions

File tree

src/app/accessibility/accessibility-settings.service.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import { Injectable } from '@angular/core';
22
import { Observable, of, switchMap } from 'rxjs';
33
import { map, take } from 'rxjs/operators';
44
import { CookieService } from '../core/services/cookie.service';
5-
import { hasValue, isNotEmpty, isNotEmptyOperator } from '../shared/empty.util';
5+
import { hasValue, isNotEmpty } from '../shared/empty.util';
66
import { AuthService } from '../core/auth/auth.service';
77
import { EPerson } from '../core/eperson/models/eperson.model';
88
import { EPersonDataService } from '../core/eperson/eperson-data.service';
99
import { getFirstCompletedRemoteData } from '../core/shared/operators';
1010
import cloneDeep from 'lodash/cloneDeep';
1111
import { environment } from '../../environments/environment';
12+
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
1213

1314
/**
1415
* Name of the cookie used to store the settings locally
@@ -198,8 +199,8 @@ export class AccessibilitySettingsService {
198199

199200
return this.ePersonService.createPatchFromCache(user).pipe(
200201
take(1),
201-
isNotEmptyOperator(),
202-
switchMap(operations => this.ePersonService.patch(user, operations)),
202+
switchMap(operations =>
203+
isNotEmpty(operations) ? this.ePersonService.patch(user, operations) : createSuccessfulRemoteDataObject$({})),
203204
getFirstCompletedRemoteData(),
204205
map(rd => rd.hasSucceeded),
205206
);
@@ -216,6 +217,15 @@ export class AccessibilitySettingsService {
216217
}
217218
}
218219

220+
/**
221+
* Clears all settings in the cookie and attempts to clear settings in metadata.
222+
* Emits true if settings in metadata were cleared and false otherwise.
223+
*/
224+
clearSettings(): Observable<boolean> {
225+
this.setSettingsInCookie({});
226+
return this.setSettingsInAuthenticatedUserMetadata({});
227+
}
228+
219229
getPlaceholder(setting: AccessibilitySetting): string {
220230
switch (setting) {
221231
case AccessibilitySetting.NotificationTimeOut:

src/app/info/accessibility-settings/accessibility-settings.component.html

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,15 @@ <h2>{{ 'info.accessibility-settings.title' | translate }}</h2>
5454
</div>
5555
</div>
5656

57-
<button type="submit" (click)="saveSettings()" class="btn btn-primary">
58-
{{ 'info.accessibility-settings.submit' | translate }}
59-
</button>
57+
<div role="group">
58+
<button type="submit" (click)="saveSettings()" class="btn btn-primary mr-2">
59+
{{ 'info.accessibility-settings.submit' | translate }}
60+
</button>
61+
<button type="reset" (click)="resetSettings()" class="btn btn-warning">
62+
{{ 'info.accessibility-settings.reset' | translate }}
63+
</button>
64+
</div>
65+
6066
</form>
6167

6268
</div>

src/app/info/accessibility-settings/accessibility-settings.component.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,14 @@ export class AccessibilitySettingsComponent implements OnInit {
5757
});
5858
}
5959

60+
/**
61+
* Resets accessibility settings
62+
*/
63+
resetSettings() {
64+
this.settingsService.clearSettings().pipe(take(1)).subscribe(() => {
65+
this.notificationsService.success(null, this.translateService.instant('info.accessibility-settings.reset-notification'));
66+
this.updateFormValues();
67+
});
68+
}
69+
6070
}

src/assets/i18n/en.json5

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1860,6 +1860,10 @@
18601860

18611861
"info.accessibility-settings.save-notification.metadata": "Successfully saved settings on the user profile.",
18621862

1863+
"info.accessibility-settings.reset-notification": "Successfully reset settings.",
1864+
1865+
"info.accessibility-settings.reset": "Reset accessibility settings",
1866+
18631867
"info.accessibility-settings.submit": "Save accessibility settings",
18641868

18651869
"info.accessibility-settings.title": "Accessibility settings",

0 commit comments

Comments
 (0)