mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 00:03:56 +00:00
[PM-5559] Implement User Notification Settings state provider (#8032)
* create user notification settings state provider * replace state service get/set disableAddLoginNotification and disableChangedPasswordNotification with user notification settings service equivalents * migrate disableAddLoginNotification and disableChangedPasswordNotification global settings to user notification settings state provider * add content script messaging the background for enableChangedPasswordPrompt setting * Implementing feedback to provide on PR * Implementing feedback to provide on PR * PR suggestions cleanup --------- Co-authored-by: Cesar Gonzalez <cgonzalez@bitwarden.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import { map, Observable } from "rxjs";
|
||||
|
||||
import {
|
||||
USER_NOTIFICATION_SETTINGS_DISK,
|
||||
GlobalState,
|
||||
KeyDefinition,
|
||||
StateProvider,
|
||||
} from "../../platform/state";
|
||||
|
||||
const ENABLE_ADDED_LOGIN_PROMPT = new KeyDefinition(
|
||||
USER_NOTIFICATION_SETTINGS_DISK,
|
||||
"enableAddedLoginPrompt",
|
||||
{
|
||||
deserializer: (value: boolean) => value ?? true,
|
||||
},
|
||||
);
|
||||
const ENABLE_CHANGED_PASSWORD_PROMPT = new KeyDefinition(
|
||||
USER_NOTIFICATION_SETTINGS_DISK,
|
||||
"enableChangedPasswordPrompt",
|
||||
{
|
||||
deserializer: (value: boolean) => value ?? true,
|
||||
},
|
||||
);
|
||||
|
||||
export abstract class UserNotificationSettingsServiceAbstraction {
|
||||
enableAddedLoginPrompt$: Observable<boolean>;
|
||||
setEnableAddedLoginPrompt: (newValue: boolean) => Promise<void>;
|
||||
enableChangedPasswordPrompt$: Observable<boolean>;
|
||||
setEnableChangedPasswordPrompt: (newValue: boolean) => Promise<void>;
|
||||
}
|
||||
|
||||
export class UserNotificationSettingsService implements UserNotificationSettingsServiceAbstraction {
|
||||
private enableAddedLoginPromptState: GlobalState<boolean>;
|
||||
readonly enableAddedLoginPrompt$: Observable<boolean>;
|
||||
|
||||
private enableChangedPasswordPromptState: GlobalState<boolean>;
|
||||
readonly enableChangedPasswordPrompt$: Observable<boolean>;
|
||||
|
||||
constructor(private stateProvider: StateProvider) {
|
||||
this.enableAddedLoginPromptState = this.stateProvider.getGlobal(ENABLE_ADDED_LOGIN_PROMPT);
|
||||
this.enableAddedLoginPrompt$ = this.enableAddedLoginPromptState.state$.pipe(
|
||||
map((x) => x ?? true),
|
||||
);
|
||||
|
||||
this.enableChangedPasswordPromptState = this.stateProvider.getGlobal(
|
||||
ENABLE_CHANGED_PASSWORD_PROMPT,
|
||||
);
|
||||
this.enableChangedPasswordPrompt$ = this.enableChangedPasswordPromptState.state$.pipe(
|
||||
map((x) => x ?? true),
|
||||
);
|
||||
}
|
||||
|
||||
async setEnableAddedLoginPrompt(newValue: boolean): Promise<void> {
|
||||
await this.enableAddedLoginPromptState.update(() => newValue);
|
||||
}
|
||||
|
||||
async setEnableChangedPasswordPrompt(newValue: boolean): Promise<void> {
|
||||
await this.enableChangedPasswordPromptState.update(() => newValue);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user