mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
import cookie from 'react-cookies'
|
|
|
|
/**
|
|
* 初始化主题
|
|
* @param theme 用户默认主题state
|
|
* @param updateDarkMode 更改主题ChangeState函数
|
|
* @description 读取cookie中存的用户主题
|
|
*/
|
|
export const initTheme = (isDarkMode, updateDarkMode) => {
|
|
// 若未指定主题,则从时间和浏览器偏好中决定初始主题
|
|
if (!isDarkMode) {
|
|
const date = new Date()
|
|
const prefersDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
const useDark = prefersDarkMode || (date.getHours() >= 18 || date.getHours() < 6)
|
|
if (useDark) {
|
|
isDarkMode = true
|
|
} else {
|
|
isDarkMode = false
|
|
}
|
|
}
|
|
if (typeof window !== 'undefined') {
|
|
const htmlElement = document.getElementsByTagName('html')
|
|
htmlElement.className = ''
|
|
updateDarkMode(isDarkMode)
|
|
saveDarkModeToCookies(isDarkMode)
|
|
htmlElement.classList?.add(isDarkMode)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 读取默认主题
|
|
* @returns {*}
|
|
*/
|
|
export const loadDarkModeFromCookies = () => {
|
|
return cookie.load('theme')
|
|
}
|
|
|
|
/**
|
|
* 保存默认主题
|
|
* @param newTheme
|
|
*/
|
|
export const saveDarkModeToCookies = (newTheme) => {
|
|
cookie.save('theme', newTheme, { path: '/' })
|
|
}
|