blob: d3d7e5e9825847206d69cba5331960596f57a359 [file] [log] [blame]
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +02001import { MDCTooltip } from '@material/tooltip';
avm999632485a3e2021-09-08 22:18:38 +02002
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +02003import { createPlainTooltip } from '../../../../common/tooltip.js';
4import { createExtBadge } from '../../../../contentScripts/communityConsole/utils/common.js';
avm999632485a3e2021-09-08 22:18:38 +02005
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +01006export const kColorThemeMode = Object.freeze({
7 Auto: Symbol('auto'),
8 Light: Symbol('light'),
9 Dark: Symbol('dark'),
10});
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020011
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020012export function injectDarkThemeButton(rightControl) {
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020013 var darkThemeSwitch = document.createElement('material-button');
14 darkThemeSwitch.classList.add('TWPT-dark-theme', 'TWPT-btn--with-badge');
15 darkThemeSwitch.setAttribute('button', '');
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020016
Adrià Vilanova Martínez968e93c2024-03-11 23:18:16 +010017 darkThemeSwitch.addEventListener('click', () => {
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020018 chrome.storage.sync.get(null, (currentOptions) => {
19 currentOptions.ccdarktheme_switch_status =
20 !currentOptions.ccdarktheme_switch_status;
21 chrome.storage.sync.set(currentOptions);
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020022 });
23 });
24
25 var switchContent = document.createElement('div');
26 switchContent.classList.add('content');
27
28 var icon = document.createElement('material-icon');
29
30 var i = document.createElement('i');
31 i.classList.add('material-icon-i', 'material-icons-extended');
32 i.textContent = 'brightness_4';
33
34 icon.appendChild(i);
35 switchContent.appendChild(icon);
36 darkThemeSwitch.appendChild(switchContent);
37
avm999632485a3e2021-09-08 22:18:38 +020038 let badgeContent, badgeTooltip;
39 [badgeContent, badgeTooltip] = createExtBadge();
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020040
41 darkThemeSwitch.appendChild(badgeContent);
42
43 rightControl.style.width =
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020044 parseInt(window.getComputedStyle(rightControl).width) + 58 + 'px';
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020045 rightControl.insertAdjacentElement('afterbegin', darkThemeSwitch);
avm999632485a3e2021-09-08 22:18:38 +020046
47 createPlainTooltip(
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020048 switchContent,
49 chrome.i18n.getMessage('inject_ccdarktheme_helper'),
50 );
avm999632485a3e2021-09-08 22:18:38 +020051 new MDCTooltip(badgeTooltip);
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020052}
53
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +010054export function getCurrentColorTheme(options) {
55 if (!options.ccdarktheme) {
56 return kColorThemeMode.Light;
57 } else {
58 if (options.ccdarktheme_mode == 'switch') {
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020059 return options.ccdarktheme_switch_status
60 ? kColorThemeMode.Dark
61 : kColorThemeMode.Light;
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +010062 } else {
63 return kColorThemeMode.Auto;
64 }
65 }
66}
67
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020068export function isDarkThemeOn(options) {
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +010069 const activeColorTheme = getCurrentColorTheme(options);
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020070
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +010071 switch (activeColorTheme) {
72 case kColorThemeMode.Auto:
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020073 return (
74 window.matchMedia &&
75 window.matchMedia('(prefers-color-scheme: dark)').matches
76 );
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020077
Adrià Vilanova Martínezf472d492024-03-05 21:26:53 +010078 case kColorThemeMode.Light:
79 return false;
80
81 case kColorThemeMode.Dark:
82 return true;
83 }
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +020084}