mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 15:53:27 +00:00
[PM-9552] add a toggle for the routing animation (#10005)
* add a toggle for the routing animation * add missing period (thanks mat) * rename routingAnimation to enableRoutingAnimation for consistency * move animation-control.service.ts into abstractions * simplify config option * fixup! simplify config option remove dead aria reference --------- Co-authored-by: Shane Melton <smelton@bitwarden.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { Observable, map } from "rxjs";
|
||||
|
||||
import { GlobalStateProvider, KeyDefinition, ANIMATION_DISK } from "../state";
|
||||
|
||||
export abstract class AnimationControlService {
|
||||
/**
|
||||
* The routing animation toggle.
|
||||
*/
|
||||
abstract enableRoutingAnimation$: Observable<boolean>;
|
||||
|
||||
/**
|
||||
* A method for updating the state of the animation toggle.
|
||||
* @param theme The new state.
|
||||
*/
|
||||
abstract setEnableRoutingAnimation(state: boolean): Promise<void>;
|
||||
}
|
||||
|
||||
const ROUTING_ANIMATION = new KeyDefinition<boolean>(ANIMATION_DISK, "routing", {
|
||||
deserializer: (s) => s,
|
||||
});
|
||||
|
||||
export class DefaultAnimationControlService implements AnimationControlService {
|
||||
private readonly enableRoutingAnimationState = this.globalStateProvider.get(ROUTING_ANIMATION);
|
||||
|
||||
enableRoutingAnimation$ = this.enableRoutingAnimationState.state$.pipe(
|
||||
map((state) => state ?? this.defaultEnableRoutingAnimation),
|
||||
);
|
||||
|
||||
constructor(
|
||||
private globalStateProvider: GlobalStateProvider,
|
||||
private defaultEnableRoutingAnimation: boolean = true,
|
||||
) {}
|
||||
|
||||
async setEnableRoutingAnimation(state: boolean): Promise<void> {
|
||||
await this.enableRoutingAnimationState.update(() => state, {
|
||||
shouldUpdate: (currentState) => currentState !== state,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -117,6 +117,7 @@ export const POPUP_VIEW_MEMORY = new StateDefinition("popupView", "memory", {
|
||||
export const SYNC_DISK = new StateDefinition("sync", "disk", { web: "memory" });
|
||||
export const THEMING_DISK = new StateDefinition("theming", "disk", { web: "disk-local" });
|
||||
export const TRANSLATION_DISK = new StateDefinition("translation", "disk", { web: "disk-local" });
|
||||
export const ANIMATION_DISK = new StateDefinition("animation", "disk");
|
||||
export const TASK_SCHEDULER_DISK = new StateDefinition("taskScheduler", "disk");
|
||||
|
||||
// Secrets Manager
|
||||
|
||||
Reference in New Issue
Block a user