MCPcopy Index your code
hub / github.com/sqlchat/sqlchat / MyApp

Function MyApp

src/pages/_app.tsx:23–82  ·  view source on GitHub ↗
({ Component, pageProps: { session, ...pageProps } }: AppProps<{ session: Session }>)

Source from the content-addressed store, hash-verified

21import type { Session } from "next-auth";
22
23function MyApp({ Component, pageProps: { session, ...pageProps } }: AppProps<{ session: Session }>) {
24 const { i18n } = useTranslation();
25 const settingStore = useSettingStore();
26
27 // Check whether those NEXT_PUBLIC_ envs are properly exposed in frontend.
28 // See https://github.com/vercel/next.js/discussions/17641
29 console.log("Has database:", hasDatabase());
30
31 useEffect(() => {
32 const darkMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
33 const handleColorSchemeChange = (e: MediaQueryListEvent) => {
34 if (settingStore.getState().setting.theme === "system") {
35 const theme = e.matches ? "dark" : "light";
36 document.documentElement.classList.remove("dark");
37 document.documentElement.classList.remove("light");
38 document.documentElement.classList.add(theme);
39 }
40 };
41
42 try {
43 if (darkMediaQuery.addEventListener) {
44 darkMediaQuery.addEventListener("change", handleColorSchemeChange);
45 } else {
46 darkMediaQuery.addListener(handleColorSchemeChange);
47 }
48 } catch (error) {
49 console.error("failed to initial color scheme listener", error);
50 }
51 }, []);
52
53 useEffect(() => {
54 const locale = settingStore.setting.locale;
55 i18n.changeLanguage(locale);
56 document.documentElement.setAttribute("lang", locale);
57 }, [settingStore.setting.locale]);
58
59 useEffect(() => {
60 const theme = settingStore.setting.theme;
61 let currentAppearance = theme;
62 if (theme === "system") {
63 if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
64 currentAppearance = "dark";
65 } else {
66 currentAppearance = "light";
67 }
68 }
69
70 document.documentElement.classList.remove("dark");
71 document.documentElement.classList.remove("light");
72 document.documentElement.classList.add(currentAppearance);
73 }, [settingStore.setting.theme]);
74
75 return (
76 <SessionProvider session={session}>
77 <Component {...pageProps} />
78 <Toaster />
79 <Analytics />
80 </SessionProvider>

Callers

nothing calls this directly

Calls 1

hasDatabaseFunction · 0.90

Tested by

no test coverage detected