Skip to content

Commit deceb06

Browse files
committed
chore: improve compatibility for upgraded packages
1 parent a10c53e commit deceb06

File tree

4 files changed

+31
-8
lines changed

4 files changed

+31
-8
lines changed

src/components/DecisionCard/index.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ function DecisionCard(props) {
1414
const question = props.question
1515

1616
useEffect(() => {
17-
getUserConfig()
18-
.then(setConfig)
19-
.then(() => setRender(true))
17+
getUserConfig().then((config) => {
18+
setConfig(config)
19+
setRender(true)
20+
})
2021
}, [])
2122

2223
useEffect(() => {

src/components/FloatingToolbar/index.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ function FloatingToolbar(props) {
2121
const windowSize = useClampWindowSize([750, 1500], [0, Infinity])
2222

2323
useEffect(() => {
24-
getUserConfig()
25-
.then(setConfig)
26-
.then(() => setRender(true))
24+
getUserConfig().then((config) => {
25+
setConfig(config)
26+
setRender(true)
27+
})
2728
}, [])
2829

2930
useEffect(() => {

src/hooks/use-window-theme.mjs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { useEffect, useState } from 'react'
2+
3+
export function useWindowTheme() {
4+
const [theme, setTheme] = useState(
5+
window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
6+
? 'dark'
7+
: 'light',
8+
)
9+
useEffect(() => {
10+
if (!window.matchMedia) return
11+
const listener = (e) => {
12+
setTheme(e.matches ? 'dark' : 'light')
13+
}
14+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener)
15+
return () =>
16+
window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener)
17+
}, [])
18+
return theme
19+
}

src/popup/Popup.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import PropTypes from 'prop-types'
1919
import { config as toolsConfig } from '../content-script/selection-tools'
2020
import wechatpay from './donation/wechatpay.jpg'
2121
import bugmeacoffee from './donation/bugmeacoffee.svg'
22+
import { useWindowTheme } from '../hooks/use-window-theme.mjs'
2223

2324
function GeneralPart({ config, updateConfig }) {
2425
const [balance, setBalance] = useState(null)
@@ -388,6 +389,7 @@ function Popup() {
388389
const [config, setConfig] = useState(defaultConfig)
389390
const [currentVersion, setCurrentVersion] = useState('')
390391
const [latestVersion, setLatestVersion] = useState('')
392+
const theme = useWindowTheme()
391393

392394
const updateConfig = (value) => {
393395
setConfig({ ...config, ...value })
@@ -407,8 +409,8 @@ function Popup() {
407409
}, [])
408410

409411
useEffect(() => {
410-
document.documentElement.dataset.theme = config.themeMode
411-
}, [config.themeMode])
412+
document.documentElement.dataset.theme = config.themeMode === 'auto' ? theme : config.themeMode
413+
}, [config.themeMode, theme])
412414

413415
return (
414416
<div className="container">

0 commit comments

Comments
 (0)