Change: detect media change in content script
This commit is contained in:
parent
a0004bb6fd
commit
f5e8666c23
|
@ -1,6 +1,7 @@
|
|||
/* global download prefs openURL FIREFOX CHROME VIVALDI
|
||||
debounce URLS ignoreChromeError getTab
|
||||
styleManager msg navigatorUtil iconUtil workerUtil contentScripts */
|
||||
styleManager msg navigatorUtil iconUtil workerUtil contentScripts
|
||||
colorScheme */
|
||||
'use strict';
|
||||
|
||||
// eslint-disable-next-line no-var
|
||||
|
@ -63,7 +64,9 @@ window.API_METHODS = Object.assign(window.API_METHODS || {}, {
|
|||
return browser.runtime.openOptionsPage()
|
||||
.then(() => new Promise(resolve => setTimeout(resolve, 100)))
|
||||
.then(() => msg.broadcastExtension({method: 'optionsCustomizeHotkeys'}));
|
||||
}
|
||||
},
|
||||
|
||||
updateSystemPreferDark: colorScheme.updateSystemPreferDark
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-var
|
||||
|
|
|
@ -8,9 +8,6 @@ const colorScheme = (() => {
|
|||
let timePreferDark = false;
|
||||
const changeListeners = new Set();
|
||||
|
||||
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
media.addListener(updateSystemPreferDark);
|
||||
|
||||
const checkTime = ['schemeSwitcher.nightStart', 'schemeSwitcher.nightEnd'];
|
||||
prefs.subscribe(checkTime, (key, value) => {
|
||||
updateTimePreferDark();
|
||||
|
@ -29,7 +26,7 @@ const colorScheme = (() => {
|
|||
updateSystemPreferDark();
|
||||
updateTimePreferDark();
|
||||
|
||||
return {shouldIncludeStyle, onChange};
|
||||
return {shouldIncludeStyle, onChange, updateSystemPreferDark};
|
||||
|
||||
function createAlarm(key, value) {
|
||||
const date = new Date();
|
||||
|
@ -63,10 +60,11 @@ const colorScheme = (() => {
|
|||
|
||||
function updateSystemPreferDark() {
|
||||
const oldValue = systemPreferDark;
|
||||
systemPreferDark = media.matches;
|
||||
systemPreferDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (systemPreferDark !== oldValue) {
|
||||
emitChange();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function updateTimePreferDark() {
|
||||
|
|
|
@ -46,6 +46,13 @@ const APPLY = (() => {
|
|||
prefs.subscribe(['exposeIframes'], updateExposeIframes);
|
||||
}
|
||||
|
||||
// detect media change in content script
|
||||
// FIXME: move this to background page when following bugs are fixed:
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1561546
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=968651
|
||||
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
media.addListener(() => API.updateSystemPreferDark().catch(console.error));
|
||||
|
||||
function onInjectorUpdate() {
|
||||
if (!IS_OWN_PAGE && styleInjector.list.length) {
|
||||
docRewriteObserver.start();
|
||||
|
|
Loading…
Reference in New Issue
Block a user