mirror of https://github.com/msgbyte/tailchat
refactor: 修改暗黑模式的实现, 使其能在内部进行变更后立即响应
parent
546a3e6469
commit
f76ace6069
@ -1,7 +1,12 @@
|
||||
import React from 'react';
|
||||
import { CacheProvider } from '../cache/Provider';
|
||||
import { DarkModeContextProvider } from '../contexts/DarkModeContext';
|
||||
|
||||
export const TcProvider: React.FC = React.memo((props) => {
|
||||
return <CacheProvider>{props.children}</CacheProvider>;
|
||||
return (
|
||||
<CacheProvider>
|
||||
<DarkModeContextProvider>{props.children}</DarkModeContextProvider>
|
||||
</CacheProvider>
|
||||
);
|
||||
});
|
||||
TcProvider.displayName = 'TcProvider';
|
||||
|
@ -0,0 +1,26 @@
|
||||
import React, { useContext } from 'react';
|
||||
import { useStorage } from 'tailchat-shared';
|
||||
|
||||
const DarkModeContext = React.createContext<{
|
||||
darkMode: boolean;
|
||||
setDarkMode: (isDarkMode: boolean) => void;
|
||||
}>({
|
||||
darkMode: true,
|
||||
setDarkMode: () => {},
|
||||
});
|
||||
DarkModeContext.displayName = 'DarkModeContext';
|
||||
|
||||
export const DarkModeContextProvider: React.FC = React.memo((props) => {
|
||||
const [darkMode = true, { save: setDarkMode }] = useStorage('darkMode', true);
|
||||
|
||||
return (
|
||||
<DarkModeContext.Provider value={{ darkMode, setDarkMode }}>
|
||||
{props.children}
|
||||
</DarkModeContext.Provider>
|
||||
);
|
||||
});
|
||||
DarkModeContextProvider.displayName = 'DarkModeContextProvider';
|
||||
|
||||
export function useDarkMode() {
|
||||
return useContext(DarkModeContext);
|
||||
}
|
Loading…
Reference in New Issue