blob: 7bd4ba6832b68470fe0f4ed6b6602436cd2980c2 [file] [log] [blame]
avm999632485a3e2021-09-08 22:18:38 +02001import {MDCTooltip} from '@material/tooltip';
2
Adrià Vilanova Martínez968e93c2024-03-11 23:18:16 +01003import {createPlainTooltip} from '../../../common/tooltip.js';
4import {createExtBadge} from '../utils/common.js';
avm999632485a3e2021-09-08 22:18:38 +02005
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02006
Adrià Vilanova Martínez968e93c2024-03-11 23:18:16 +01007export function injectDarkThemeButton(rightControl, previousDarkThemeOption) {
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02008 var darkThemeSwitch = document.createElement('material-button');
9 darkThemeSwitch.classList.add('TWPT-dark-theme', 'TWPT-btn--with-badge');
10 darkThemeSwitch.setAttribute('button', '');
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020011
Adrià Vilanova Martínez968e93c2024-03-11 23:18:16 +010012 darkThemeSwitch.addEventListener('click', () => {
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020013 chrome.storage.sync.get(null, currentOptions => {
Adrià Vilanova Martínez968e93c2024-03-11 23:18:16 +010014 currentOptions.ccdarktheme_switch_status = !previousDarkThemeOption;
15 chrome.storage.sync.set(currentOptions, () => {
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020016 location.reload();
17 });
18 });
19 });
20
21 var switchContent = document.createElement('div');
22 switchContent.classList.add('content');
23
24 var icon = document.createElement('material-icon');
25
26 var i = document.createElement('i');
27 i.classList.add('material-icon-i', 'material-icons-extended');
28 i.textContent = 'brightness_4';
29
30 icon.appendChild(i);
31 switchContent.appendChild(icon);
32 darkThemeSwitch.appendChild(switchContent);
33
avm999632485a3e2021-09-08 22:18:38 +020034 let badgeContent, badgeTooltip;
35 [badgeContent, badgeTooltip] = createExtBadge();
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020036
37 darkThemeSwitch.appendChild(badgeContent);
38
39 rightControl.style.width =
40 (parseInt(window.getComputedStyle(rightControl).width) + 58) + 'px';
41 rightControl.insertAdjacentElement('afterbegin', darkThemeSwitch);
avm999632485a3e2021-09-08 22:18:38 +020042
43 createPlainTooltip(
44 switchContent, chrome.i18n.getMessage('inject_ccdarktheme_helper'));
45 new MDCTooltip(badgeTooltip);
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020046}
47
48export function isDarkThemeOn(options) {
49 if (!options.ccdarktheme) return false;
50
51 if (options.ccdarktheme_mode == 'switch')
52 return options.ccdarktheme_switch_status;
53
54 return window.matchMedia &&
55 window.matchMedia('(prefers-color-scheme: dark)').matches;
56}