Add: handle color scheme

This commit is contained in:
eight 2019-06-26 01:03:53 +08:00
parent 04b546034b
commit 831d1b6fc3
2 changed files with 21 additions and 7 deletions

View File

@ -38,18 +38,21 @@ const colorScheme = (() => {
} }
function shouldIncludeStyle(style) { function shouldIncludeStyle(style) {
if (style.preferScheme === 'always') { const isDark = style.preferScheme === 'dark';
const isLight = style.preferScheme === 'light';
if (!isDark && !isLight) {
return true; return true;
} }
if (prefs.get('schemeSwitcher.enabled') === 'never') { const switcherState = prefs.get('schemeSwitcher.enabled');
if (switcherState === 'never') {
return true; return true;
} }
if (prefs.get('schemeSwitcher.enabled') === 'system') { if (switcherState === 'system') {
return systemPreferDark && style.preferScheme === 'dark' || return systemPreferDark && isDark ||
!systemPreferDark && style.preferScheme === 'light'; !systemPreferDark && isLight;
} }
return timePreferDark && style.preferScheme === 'dark' || return timePreferDark && isDark ||
!timePreferDark && style.preferScheme === 'light'; !timePreferDark && isLight;
} }
function updateSystemPreferDark() { function updateSystemPreferDark() {

View File

@ -61,6 +61,7 @@ const styleManager = (() => {
}; };
handleLivePreviewConnections(); handleLivePreviewConnections();
handleColorScheme();
return ensurePrepared({ return ensurePrepared({
get, get,
@ -81,6 +82,16 @@ const styleManager = (() => {
removeInclusion removeInclusion
}); });
function handleColorScheme() {
colorScheme.onChange(() => {
for (const {data} of styles.values()) {
if (data.preferScheme === 'dark' || data.preferScheme === 'light') {
broadcastStyleUpdated(data, 'colorScheme', undefined, false);
}
}
});
}
function handleLivePreviewConnections() { function handleLivePreviewConnections() {
chrome.runtime.onConnect.addListener(port => { chrome.runtime.onConnect.addListener(port => {
if (port.name !== 'livePreview') { if (port.name !== 'livePreview') {