($settings: Partial<UserSettings>, onlyUpdateActiveTab = false)
| 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}}); |
nothing calls this directly
no test coverage detected