mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 06:43:35 +00:00
[PM-14351] Migrate away from theme enum (#11812)
* update extension autofill concerns to use theme object and type over enum * mark ThemeType enum as deprecated * update theming service concerns to use theme object and type over enum
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Inject, Injectable } from "@angular/core";
|
||||
import { fromEvent, map, merge, Observable, of, Subscription, switchMap } from "rxjs";
|
||||
|
||||
import { ThemeType } from "@bitwarden/common/platform/enums";
|
||||
import { ThemeTypes, Theme } from "@bitwarden/common/platform/enums";
|
||||
import { ThemeStateService } from "@bitwarden/common/platform/theming/theme-state.service";
|
||||
|
||||
import { SYSTEM_THEME_OBSERVABLE } from "../../../services/injection-tokens";
|
||||
@@ -15,7 +15,7 @@ export class AngularThemingService implements AbstractThemingService {
|
||||
* @param window The window that should be watched for system theme changes.
|
||||
* @returns An observable that will track the system theme.
|
||||
*/
|
||||
static createSystemThemeFromWindow(window: Window): Observable<ThemeType> {
|
||||
static createSystemThemeFromWindow(window: Window): Observable<Theme> {
|
||||
return merge(
|
||||
// This observable should always emit at least once, so go and get the current system theme designation
|
||||
of(AngularThemingService.getSystemThemeFromWindow(window)),
|
||||
@@ -23,7 +23,7 @@ export class AngularThemingService implements AbstractThemingService {
|
||||
fromEvent<MediaQueryListEvent>(
|
||||
window.matchMedia("(prefers-color-scheme: dark)"),
|
||||
"change",
|
||||
).pipe(map((event) => (event.matches ? ThemeType.Dark : ThemeType.Light))),
|
||||
).pipe(map((event) => (event.matches ? ThemeTypes.Dark : ThemeTypes.Light))),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,15 +32,15 @@ export class AngularThemingService implements AbstractThemingService {
|
||||
* @param window The window to query for the current theme.
|
||||
* @returns The active system theme.
|
||||
*/
|
||||
static getSystemThemeFromWindow(window: Window): ThemeType {
|
||||
static getSystemThemeFromWindow(window: Window): Theme {
|
||||
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
? ThemeType.Dark
|
||||
: ThemeType.Light;
|
||||
? ThemeTypes.Dark
|
||||
: ThemeTypes.Light;
|
||||
}
|
||||
|
||||
readonly theme$ = this.themeStateService.selectedTheme$.pipe(
|
||||
switchMap((configuredTheme) => {
|
||||
if (configuredTheme === ThemeType.System) {
|
||||
if (configuredTheme === ThemeTypes.System) {
|
||||
return this.systemTheme$;
|
||||
}
|
||||
|
||||
@@ -51,16 +51,16 @@ export class AngularThemingService implements AbstractThemingService {
|
||||
constructor(
|
||||
private themeStateService: ThemeStateService,
|
||||
@Inject(SYSTEM_THEME_OBSERVABLE)
|
||||
private systemTheme$: Observable<ThemeType>,
|
||||
private systemTheme$: Observable<Theme>,
|
||||
) {}
|
||||
|
||||
applyThemeChangesTo(document: Document): Subscription {
|
||||
return this.theme$.subscribe((theme) => {
|
||||
document.documentElement.classList.remove(
|
||||
"theme_" + ThemeType.Light,
|
||||
"theme_" + ThemeType.Dark,
|
||||
"theme_" + ThemeType.Nord,
|
||||
"theme_" + ThemeType.SolarizedDark,
|
||||
"theme_" + ThemeTypes.Light,
|
||||
"theme_" + ThemeTypes.Dark,
|
||||
"theme_" + ThemeTypes.Nord,
|
||||
"theme_" + ThemeTypes.SolarizedDark,
|
||||
);
|
||||
document.documentElement.classList.add("theme_" + theme);
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Observable, Subscription } from "rxjs";
|
||||
|
||||
import { ThemeType } from "@bitwarden/common/platform/enums";
|
||||
import { Theme } from "@bitwarden/common/platform/enums";
|
||||
|
||||
/**
|
||||
* A service for managing and observing the current application theme.
|
||||
@@ -9,9 +9,9 @@ import { ThemeType } from "@bitwarden/common/platform/enums";
|
||||
export abstract class AbstractThemingService {
|
||||
/**
|
||||
* The effective theme based on the user configured choice and the current system theme if
|
||||
* the configured choice is {@link ThemeType.System}.
|
||||
* the configured choice is {@link ThemeTypes.System}.
|
||||
*/
|
||||
abstract theme$: Observable<ThemeType>;
|
||||
abstract theme$: Observable<Theme>;
|
||||
/**
|
||||
* Listens for effective theme changes and applies changes to the provided document.
|
||||
* @param document The document that should have theme classes applied to it.
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
AbstractStorageService,
|
||||
ObservableStorageService,
|
||||
} from "@bitwarden/common/platform/abstractions/storage.service";
|
||||
import { ThemeType } from "@bitwarden/common/platform/enums";
|
||||
import { Theme } from "@bitwarden/common/platform/enums";
|
||||
import { StateFactory } from "@bitwarden/common/platform/factories/state-factory";
|
||||
import { Message } from "@bitwarden/common/platform/messaging";
|
||||
import { VaultTimeout } from "@bitwarden/common/types/vault-timeout.type";
|
||||
@@ -47,7 +47,7 @@ export const SUPPORTS_SECURE_STORAGE = new SafeInjectionToken<boolean>("SUPPORTS
|
||||
export const LOCALES_DIRECTORY = new SafeInjectionToken<string>("LOCALES_DIRECTORY");
|
||||
export const SYSTEM_LANGUAGE = new SafeInjectionToken<string>("SYSTEM_LANGUAGE");
|
||||
export const LOG_MAC_FAILURES = new SafeInjectionToken<boolean>("LOG_MAC_FAILURES");
|
||||
export const SYSTEM_THEME_OBSERVABLE = new SafeInjectionToken<Observable<ThemeType>>(
|
||||
export const SYSTEM_THEME_OBSERVABLE = new SafeInjectionToken<Observable<Theme>>(
|
||||
"SYSTEM_THEME_OBSERVABLE",
|
||||
);
|
||||
export const DEFAULT_VAULT_TIMEOUT = new SafeInjectionToken<VaultTimeout>("DEFAULT_VAULT_TIMEOUT");
|
||||
|
||||
Reference in New Issue
Block a user