MCPcopy
hub / github.com/darkreader/darkreader / toggleActiveTab

Method toggleActiveTab

src/background/extension.ts:574–616  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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 //

Callers

nothing calls this directly

Calls 4

getURLHostOrProtocolFunction · 0.90
getActiveTabInfoMethod · 0.80
isURLInDarkListMethod · 0.80
changeSettingsMethod · 0.65

Tested by

no test coverage detected