diff --git a/db/app/core/components/DarkModeToggle.tsx b/db/app/core/components/DarkModeToggle.tsx index e6db3c0..acd5feb 100644 --- a/db/app/core/components/DarkModeToggle.tsx +++ b/db/app/core/components/DarkModeToggle.tsx @@ -24,7 +24,7 @@ const useStyles = makeStyles((theme: Theme) => ({ export const DarkModeToggle = () => { const [mounted, setMounted] = useState(false) const theme = useTheme() - const {theme: nextTheme, setTheme} = nextUseTheme() + const {setTheme} = nextUseTheme() const classes = useStyles() const [preferedColorScheme, setPreferedColorScheme] = useGlobalState( useCallback( diff --git a/db/app/pages/404.tsx b/db/app/pages/404.tsx index 826682f..efb34a9 100644 --- a/db/app/pages/404.tsx +++ b/db/app/pages/404.tsx @@ -44,5 +44,6 @@ const PageNotFound: BlitzPage = () => { } PageNotFound.getLayout = (page) => {page} +PageNotFound.suppressFirstRenderFlicker = true export default PageNotFound; \ No newline at end of file diff --git a/db/app/pages/_app.tsx b/db/app/pages/_app.tsx index 04551b9..5967c65 100644 --- a/db/app/pages/_app.tsx +++ b/db/app/pages/_app.tsx @@ -8,42 +8,47 @@ import { import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider } from "@mui/material/styles"; -import React, { useEffect, useMemo } from "react"; -import { useMediaQuery } from "@mui/material"; +import React, { useEffect, useMemo, useState } from "react"; import { useGlobalState } from "app/core/state/GlobalState"; import { LocalStorageKeys } from "app/core/dto/SaveKeys"; import { ThemeMode } from "app/core/state/ThemeMode"; import { darkPalette } from "app/core/theme/darkTheme"; import { lightPalette } from "app/core/theme/lightTheme"; import { getTheme } from "app/core/theme/Theme"; +import { useTheme } from "next-themes"; -export default function App({ Component, pageProps }: AppProps) { - const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); +const App = ({ Component, pageProps }: AppProps) => { + const [mounted, setMounted] = useState(false) + const {theme: prefersDarkMode} = useTheme() const [preferedColorScheme ,setPreferedColorScheme] = useGlobalState(state => [state.preferedColorScheme, state.setPreferedColorScheme]) + const reset = useQueryErrorResetBoundary().reset - useEffect(() => { - const localPreferedTheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME); - if (localPreferedTheme) { - setPreferedColorScheme(localPreferedTheme as ThemeMode) - return - } + useEffect(() => { + const localPreferedTheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME); + if (localPreferedTheme) { + setPreferedColorScheme(localPreferedTheme as ThemeMode) + return + } - const preferedTheme = prefersDarkMode ? ThemeMode.DARK_MODE : ThemeMode.LIGHT_MODE; - setPreferedColorScheme(preferedTheme) - // eslint-disable-next-line - }, [prefersDarkMode]) // Need to be only used on prefersDarkMode change + const preferedTheme = prefersDarkMode ? ThemeMode.DARK_MODE : ThemeMode.LIGHT_MODE; + setPreferedColorScheme(preferedTheme) + // eslint-disable-next-line + }, [prefersDarkMode]) // Need to be only used on prefersDarkMode change const getLayout = Component.getLayout || ((page) => page) const palette = useMemo( ()=> getTheme(preferedColorScheme === ThemeMode.DARK_MODE ? darkPalette.palette : lightPalette.palette), [preferedColorScheme]); + useEffect(() => setMounted(true), []) + if (!mounted) return null + return ( {getLayout()} @@ -51,32 +56,8 @@ export default function App({ Component, pageProps }: AppProps) { ); } -/* - const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); - const [preferedColorScheme ,setPreferedColorScheme] = useGlobalState(state => [state.preferedColorScheme, state.setPreferedColorScheme]) - - useEffect(() => { - const localPreferedTheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME); - if (localPreferedTheme) { - setPreferedColorScheme(localPreferedTheme as ThemeMode) - return - } - - const preferedTheme = prefersDarkMode ? ThemeMode.DARK_MODE : ThemeMode.LIGHT_MODE; - setPreferedColorScheme(preferedTheme) - // eslint-disable-next-line - }, [prefersDarkMode]) // Need to be only used on prefersDarkMode change - - return ( - <> - - - - - - ) -*/ - function RootErrorFallback({ error }: ErrorFallbackProps) { return } + +export default App; \ No newline at end of file diff --git a/db/app/pages/index.tsx b/db/app/pages/index.tsx index c4f42c8..002d184 100644 --- a/db/app/pages/index.tsx +++ b/db/app/pages/index.tsx @@ -214,6 +214,7 @@ const useStyles = makeStyles((theme: Theme) => ({ const Search: BlitzPage = () => { const classes = useStyles(); + return ( <> @@ -224,5 +225,6 @@ const Search: BlitzPage = () => { } Search.getLayout = (page) => {page} +Search.suppressFirstRenderFlicker = true export default Search; \ No newline at end of file