@@ -5,15 +5,14 @@ import {
55 MantineProvider ,
66 Stack ,
77} from "@mantine/core" ;
8+ import { useColorScheme } from "@mantine/hooks" ;
89import { ModalsProvider } from "@mantine/modals" ;
910import { NotificationsProvider } from "@mantine/notifications" ;
10- import { getCookie } from "cookies-next" ;
11+ import { getCookie , setCookies } from "cookies-next" ;
1112import { GetServerSidePropsContext } from "next" ;
1213import type { AppProps } from "next/app" ;
13- import getConfig from "next/config" ;
1414import { useEffect , useState } from "react" ;
1515import Footer from "../components/Footer" ;
16- import ThemeProvider from "../components/mantine/ThemeProvider" ;
1716import Header from "../components/navBar/NavBar" ;
1817import { UserContext } from "../hooks/user.hook" ;
1918import authService from "../services/auth.service" ;
@@ -23,56 +22,66 @@ import globalStyle from "../styles/mantine.style";
2322import { CurrentUser } from "../types/user.type" ;
2423import { GlobalLoadingContext } from "../utils/loading.util" ;
2524
26- const { publicRuntimeConfig } = getConfig ( )
27-
2825function App (
2926 props : AppProps & { colorScheme : ColorScheme ; environmentVariables : any }
3027) {
3128 const { Component, pageProps } = props ;
29+
30+ const systemTheme = useColorScheme ( ) ;
31+
3232 const [ colorScheme , setColorScheme ] = useState < ColorScheme > (
3333 props . colorScheme
3434 ) ;
3535 const [ isLoading , setIsLoading ] = useState ( true ) ;
3636 const [ user , setUser ] = useState < CurrentUser | null > ( null ) ;
3737
3838 const getInitalData = async ( ) => {
39- console . log ( publicRuntimeConfig )
4039 setIsLoading ( true ) ;
4140 setUser ( await userService . getCurrentUser ( ) ) ;
42-
4341 setIsLoading ( false ) ;
4442 } ;
43+
4544 useEffect ( ( ) => {
4645 setInterval ( async ( ) => await authService . refreshAccessToken ( ) , 30 * 1000 ) ;
4746 getInitalData ( ) ;
4847 } , [ ] ) ;
48+
49+ useEffect ( ( ) => {
50+ setCookies ( "mantine-color-scheme" , systemTheme , {
51+ maxAge : 60 * 60 * 24 * 30 ,
52+ } ) ;
53+ setColorScheme ( systemTheme ) ;
54+ } , [ systemTheme ] ) ;
55+
4956 return (
50- < MantineProvider withGlobalStyles withNormalizeCSS theme = { globalStyle } >
51- < ThemeProvider colorScheme = { colorScheme } setColorScheme = { setColorScheme } >
52- < GlobalStyle />
53- < NotificationsProvider >
54- < ModalsProvider >
55- < GlobalLoadingContext . Provider value = { { isLoading, setIsLoading } } >
56- { isLoading ? (
57- < LoadingOverlay visible overlayOpacity = { 1 } />
58- ) : (
59- < UserContext . Provider value = { user } >
60- < LoadingOverlay visible = { isLoading } overlayOpacity = { 1 } />
61- < Stack justify = "space-between" sx = { { minHeight : "100vh" } } >
62- < div >
63- < Header />
64- < Container >
65- < Component { ...pageProps } />
66- </ Container >
67- </ div >
68- < Footer />
69- </ Stack >
70- </ UserContext . Provider >
71- ) }
72- </ GlobalLoadingContext . Provider >
73- </ ModalsProvider >
74- </ NotificationsProvider >
75- </ ThemeProvider >
57+ < MantineProvider
58+ withGlobalStyles
59+ withNormalizeCSS
60+ theme = { { colorScheme, ...globalStyle } }
61+ >
62+ < GlobalStyle />
63+ < NotificationsProvider >
64+ < ModalsProvider >
65+ < GlobalLoadingContext . Provider value = { { isLoading, setIsLoading } } >
66+ { isLoading ? (
67+ < LoadingOverlay visible overlayOpacity = { 1 } />
68+ ) : (
69+ < UserContext . Provider value = { user } >
70+ < LoadingOverlay visible = { isLoading } overlayOpacity = { 1 } />
71+ < Stack justify = "space-between" sx = { { minHeight : "100vh" } } >
72+ < div >
73+ < Header />
74+ < Container >
75+ < Component { ...pageProps } />
76+ </ Container >
77+ </ div >
78+ < Footer />
79+ </ Stack >
80+ </ UserContext . Provider >
81+ ) }
82+ </ GlobalLoadingContext . Provider >
83+ </ ModalsProvider >
84+ </ NotificationsProvider >
7685 </ MantineProvider >
7786 ) ;
7887}
0 commit comments