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