Skip to content

Commit 88df73a

Browse files
committed
refactor: improve theme switch
1 parent b454195 commit 88df73a

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/App.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { Suspense, useEffect } from 'react'
22
import { HashRouter, Route, Routes } from 'react-router-dom'
3-
import { useSelector } from 'react-redux'
3+
import { useDispatch, useSelector } from 'react-redux'
44

55
import { CSpinner } from '@coreui/react'
66
import './scss/style.scss'
@@ -34,21 +34,26 @@ const Page404 = React.lazy(() => import('./views/pages/page404/Page404'))
3434
const Page500 = React.lazy(() => import('./views/pages/page500/Page500'))
3535

3636
const App = () => {
37+
const dispatch = useDispatch()
3738
const theme = useSelector((state) => state.theme)
38-
39-
if (theme) {
40-
document.documentElement.dataset.coreuiTheme =
41-
theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : theme
42-
}
39+
const urlParams = new URLSearchParams(window.location.href.split('?')[1])
4340

4441
useEffect(() => {
42+
if (urlParams.get('theme')) {
43+
dispatch({ type: 'setTheme', theme: urlParams.get('theme') })
44+
}
45+
4546
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
4647
if (theme !== 'light' || theme !== 'dark') {
4748
setTheme(getPreferredTheme(theme))
4849
}
4950
})
5051
}, [])
5152

53+
useEffect(() => {
54+
setTheme(getPreferredTheme(theme))
55+
}, [theme])
56+
5257
return (
5358
<HashRouter>
5459
<Suspense fallback={loading}>

0 commit comments

Comments
 (0)