()
| 572 | } |
| 573 | |
| 574 | private static async toggleActiveTab() { |
| 575 | const settings = UserStorage.settings; |
| 576 | const tab = await Extension.getActiveTabInfo(); |
| 577 | if (!tab) { |
| 578 | return; |
| 579 | } |
| 580 | const {url} = tab; |
| 581 | const isInDarkList = ConfigManager.isURLInDarkList(url); |
| 582 | const host = getURLHostOrProtocol(url); |
| 583 | |
| 584 | function getToggledList(sourceList: string[]) { |
| 585 | const list = sourceList.slice(); |
| 586 | |
| 587 | let index = list.indexOf(host); |
| 588 | if (index < 0 && host.startsWith('www.')) { |
| 589 | const noWwwHost = host.substring(4); |
| 590 | index = list.indexOf(noWwwHost); |
| 591 | } |
| 592 | |
| 593 | if (index < 0) { |
| 594 | list.push(host); |
| 595 | } else { |
| 596 | list.splice(index, 1); |
| 597 | } |
| 598 | return list; |
| 599 | } |
| 600 | |
| 601 | const darkThemeDetected = settings.enabledByDefault && settings.detectDarkTheme && tab.isDarkThemeDetected; |
| 602 | if (!settings.enabledByDefault || isInDarkList || darkThemeDetected) { |
| 603 | const toggledList = getToggledList(settings.enabledFor); |
| 604 | Extension.changeSettings({enabledFor: toggledList}, true); |
| 605 | return; |
| 606 | } |
| 607 | if (settings.enabledByDefault && settings.enabledFor.includes(host)) { |
| 608 | const enabledFor = getToggledList(settings.enabledFor); |
| 609 | const disabledFor = getToggledList(settings.disabledFor); |
| 610 | Extension.changeSettings({enabledFor, disabledFor}, true); |
| 611 | return; |
| 612 | } |
| 613 | |
| 614 | const toggledList = getToggledList(settings.disabledFor); |
| 615 | Extension.changeSettings({disabledFor: toggledList}, true); |
| 616 | } |
| 617 | |
| 618 | //------------------------------------ |
| 619 | // |
nothing calls this directly
no test coverage detected