MCPcopy
hub / github.com/darkreader/darkreader / changeSettings

Method changeSettings

src/background/extension.ts:513–557  ·  view source on GitHub ↗
($settings: Partial<UserSettings>, onlyUpdateActiveTab = false)

Source from the content-addressed store, hash-verified

511 };
512
513 static async changeSettings($settings: Partial<UserSettings>, onlyUpdateActiveTab = false): Promise<void> {
514 const promises = [];
515 const prev = {...UserStorage.settings};
516
517 UserStorage.set($settings);
518
519 if (
520 (prev.enabled !== UserStorage.settings.enabled) ||
521 (prev.automation.enabled !== UserStorage.settings.automation.enabled) ||
522 (prev.automation.mode !== UserStorage.settings.automation.mode) ||
523 (prev.automation.behavior !== UserStorage.settings.automation.behavior) ||
524 (prev.time.activation !== UserStorage.settings.time.activation) ||
525 (prev.time.deactivation !== UserStorage.settings.time.deactivation) ||
526 (prev.location.latitude !== UserStorage.settings.location.latitude) ||
527 (prev.location.longitude !== UserStorage.settings.location.longitude)
528 ) {
529 Extension.updateAutoState();
530 Extension.onAppToggle();
531 }
532 if (prev.syncSettings !== UserStorage.settings.syncSettings) {
533 const promise = UserStorage.saveSyncSetting(UserStorage.settings.syncSettings);
534 promises.push(promise);
535 }
536 if (Extension.isExtensionSwitchedOn() && $settings.changeBrowserTheme != null && prev.changeBrowserTheme !== $settings.changeBrowserTheme) {
537 if ($settings.changeBrowserTheme) {
538 setWindowTheme(UserStorage.settings.theme);
539 } else {
540 resetWindowTheme();
541 }
542 }
543 if (prev.fetchNews !== UserStorage.settings.fetchNews) {
544 UserStorage.settings.fetchNews ? Newsmaker.subscribe() : Newsmaker.unSubscribe();
545 }
546
547 if (prev.enableContextMenus !== UserStorage.settings.enableContextMenus) {
548 if (UserStorage.settings.enableContextMenus) {
549 Extension.registerContextMenus();
550 } else {
551 chrome.contextMenus.removeAll();
552 }
553 }
554 const promise = Extension.onSettingsChanged(onlyUpdateActiveTab);
555 promises.push(promise);
556 await Promise.all(promises);
557 }
558
559 private static setTheme($theme: Partial<Theme>) {
560 UserStorage.set({theme: {...UserStorage.settings.theme, ...$theme}});

Callers

nothing calls this directly

Calls 12

setWindowThemeFunction · 0.90
resetWindowThemeFunction · 0.90
updateAutoStateMethod · 0.80
onAppToggleMethod · 0.80
saveSyncSettingMethod · 0.80
isExtensionSwitchedOnMethod · 0.80
subscribeMethod · 0.80
unSubscribeMethod · 0.80
registerContextMenusMethod · 0.80
onSettingsChangedMethod · 0.80
allMethod · 0.80
setMethod · 0.65

Tested by

no test coverage detected