MCPcopy
hub / github.com/TanShilongMario/PromptFill / RootProvider

Function RootProvider

src/context/RootContext.jsx:10–53  ·  view source on GitHub ↗
({ children })

Source from the content-addressed store, hash-verified

8const APP_VERSION = "1.1.2";
9
10export const RootProvider = ({ children }) => {
11 const [language, setLanguage] = useStickyState(getSystemLanguage(), "app_language_v1");
12 const [themeMode, setThemeMode] = useStickyState("system", "app_theme_mode_v1");
13 const [isDarkMode, setIsDarkMode] = useState(false);
14
15 // 面板显隐状态,持久化
16 const [isTagSidebarVisible, setIsTagSidebarVisible] = useStickyState(true, "panel_tag_sidebar_v1");
17 const [isTemplatesSidebarVisible, setIsTemplatesSidebarVisible] = useStickyState(true, "panel_templates_sidebar_v1");
18 const [isBanksSidebarVisible, setIsBanksSidebarVisible] = useStickyState(true, "panel_banks_sidebar_v1");
19
20 const t = (key, params = {}) => {
21 let str = TRANSLATIONS[language]?.[key] || key;
22 Object.keys(params).forEach(k => {
23 str = str.replace(`{{${k}}}`, params[k]);
24 });
25 return str;
26 };
27
28 useEffect(() => {
29 if (themeMode === 'system') {
30 const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
31 const handleChange = (e) => setIsDarkMode(e.matches);
32 setIsDarkMode(mediaQuery.matches);
33 mediaQuery.addEventListener('change', handleChange);
34 return () => mediaQuery.removeEventListener('change', handleChange);
35 } else {
36 setIsDarkMode(themeMode === 'dark');
37 }
38 }, [themeMode]);
39
40 return (
41 <RootContext.Provider value={{
42 language, setLanguage,
43 themeMode, setThemeMode,
44 isDarkMode, t,
45 appVersion: APP_VERSION,
46 isTagSidebarVisible, setIsTagSidebarVisible,
47 isTemplatesSidebarVisible, setIsTemplatesSidebarVisible,
48 isBanksSidebarVisible, setIsBanksSidebarVisible,
49 }}>
50 {children}
51 </RootContext.Provider>
52 );
53};
54
55export const useRootContext = () => useContext(RootContext);

Callers

nothing calls this directly

Calls 2

useStickyStateFunction · 0.90
getSystemLanguageFunction · 0.90

Tested by

no test coverage detected