1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-18 17:23:37 +00:00

[PM-5568] Implement Badge Settings state provider (#8112)

* create badge settings state provider

* replace state service get/set disableBadgeCounter with badge settings service equivalent

* migrate disableBadgeCounter account setting to badge settings state provider

* cleanup and address PR suggestions
This commit is contained in:
Jonathan Prusik
2024-02-27 16:03:12 -05:00
committed by GitHub
parent e833e93b3b
commit 929b5ebec3
15 changed files with 334 additions and 35 deletions

View File

@@ -0,0 +1,31 @@
import { map, Observable } from "rxjs";
import {
BADGE_SETTINGS_DISK,
ActiveUserState,
KeyDefinition,
StateProvider,
} from "../../platform/state";
const ENABLE_BADGE_COUNTER = new KeyDefinition(BADGE_SETTINGS_DISK, "enableBadgeCounter", {
deserializer: (value: boolean) => value ?? true,
});
export abstract class BadgeSettingsServiceAbstraction {
enableBadgeCounter$: Observable<boolean>;
setEnableBadgeCounter: (newValue: boolean) => Promise<void>;
}
export class BadgeSettingsService implements BadgeSettingsServiceAbstraction {
private enableBadgeCounterState: ActiveUserState<boolean>;
readonly enableBadgeCounter$: Observable<boolean>;
constructor(private stateProvider: StateProvider) {
this.enableBadgeCounterState = this.stateProvider.getActive(ENABLE_BADGE_COUNTER);
this.enableBadgeCounter$ = this.enableBadgeCounterState.state$.pipe(map((x) => x ?? true));
}
async setEnableBadgeCounter(newValue: boolean): Promise<void> {
await this.enableBadgeCounterState.update(() => newValue);
}
}