blob: e9ea45bd12dc9d21096ccdc2a730dcbee71fccfb [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {SkColor} from 'chrome://resources/mojo/skia/public/mojom/skcolor.mojom-webui.js';
import {ColorScheme, ThemeProviderInterface} from '../personalization_app.mojom-webui.js';
import {PersonalizationStore} from '../personalization_store.js';
import {setColorModeAutoScheduleEnabledAction, setColorSchemeAction, setDarkModeEnabledAction, setStaticColorAction} from './theme_actions.js';
/**
* @fileoverview contains all of the functions to interact with C++ side through
* mojom calls. Handles setting |PersonalizationStore| state in response to
* mojom data.
*/
export async function initializeData(
provider: ThemeProviderInterface,
store: PersonalizationStore): Promise<void> {
store.beginBatchUpdate();
const {enabled} = await provider.isColorModeAutoScheduleEnabled();
store.dispatch(setColorModeAutoScheduleEnabledAction(enabled));
const {darkModeEnabled} = await provider.isDarkModeEnabled();
store.dispatch(setDarkModeEnabledAction(darkModeEnabled));
store.endBatchUpdate();
}
export async function initializeDynamicColorData(
provider: ThemeProviderInterface,
store: PersonalizationStore): Promise<void> {
store.beginBatchUpdate();
const {staticColor} = await provider.getStaticColor();
store.dispatch(setStaticColorAction(staticColor));
const {colorScheme} = await provider.getColorScheme();
store.dispatch(setColorSchemeAction(colorScheme));
store.endBatchUpdate();
}
// Disables or enables dark color mode.
export function setColorModePref(
darkModeEnabled: boolean, provider: ThemeProviderInterface,
store: PersonalizationStore) {
provider.setColorModePref(darkModeEnabled);
// Dispatch action to highlight color mode.
store.dispatch(setDarkModeEnabledAction(darkModeEnabled));
}
// Disables or enables color mode auto schedule.
export function setColorModeAutoSchedule(
enabled: boolean, provider: ThemeProviderInterface,
store: PersonalizationStore) {
provider.setColorModeAutoScheduleEnabled(enabled);
// Dispatch action to highlight auto color mode.
store.dispatch(setColorModeAutoScheduleEnabledAction(enabled));
}
export function setColorSchemePref(
colorScheme: ColorScheme, provider: ThemeProviderInterface,
store: PersonalizationStore) {
provider.setColorScheme(colorScheme);
store.dispatch(setColorSchemeAction(colorScheme));
}
export function setStaticColorPref(
staticColor: SkColor, provider: ThemeProviderInterface,
store: PersonalizationStore) {
provider.setStaticColor(staticColor);
store.dispatch(setStaticColorAction(staticColor));
store.dispatch(setColorSchemeAction(ColorScheme.kStatic));
}