zulip/web/src/dark_theme.ts
Aman Agrawal 2deec692f6 dark_theme: Fix dark recipient background in light theme for spectators.
Since, we didn't update `user_settings.color_scheme` for spectators
and our recipient bar color calculations were based on it, this
resulted in a wrong recipient bar color if the OS default color
scheme of the user was different from `spectator-theme-preference`
set by the user using the gear menu.

To reproduce the bug:
* Set preferred color scheme to `dark` in your OS settings / Chrome
  dev tools.
* Login as spectator in Incognito.
* Switch to light theme.

You will see dark background colors in recipient bars.
2023-04-28 12:39:46 -07:00

31 lines
1010 B
TypeScript

import $ from "jquery";
import {localstorage} from "./localstorage";
import {page_params} from "./page_params";
import * as settings_config from "./settings_config";
import {user_settings} from "./user_settings";
export function enable(): void {
$(":root").removeClass("color-scheme-automatic").addClass("dark-theme");
if (page_params.is_spectator) {
const ls = localstorage();
ls.set("spectator-theme-preference", "dark");
user_settings.color_scheme = settings_config.color_scheme_values.night.code;
}
}
export function disable(): void {
$(":root").removeClass("color-scheme-automatic").removeClass("dark-theme");
if (page_params.is_spectator) {
const ls = localstorage();
ls.set("spectator-theme-preference", "light");
user_settings.color_scheme = settings_config.color_scheme_values.day.code;
}
}
export function default_preference_checker(): void {
$(":root").removeClass("dark-theme").addClass("color-scheme-automatic");
}