From d902aae03ff33d39c733cf1bce88ae58ff4cd888 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Mon, 10 Oct 2022 22:30:04 +0200 Subject: [PATCH] feat: use system color theme --- .../src/components/mantine/ThemeProvider.tsx | 41 ---------- .../src/components/navBar/ActionAvatar.tsx | 10 +-- frontend/src/components/navBar/NavBar.tsx | 14 ++-- .../components/navBar/ToggleThemeButton.tsx | 19 ----- frontend/src/pages/_app.tsx | 75 +++++++++++-------- 5 files changed, 51 insertions(+), 108 deletions(-) delete mode 100644 frontend/src/components/mantine/ThemeProvider.tsx delete mode 100644 frontend/src/components/navBar/ToggleThemeButton.tsx diff --git a/frontend/src/components/mantine/ThemeProvider.tsx b/frontend/src/components/mantine/ThemeProvider.tsx deleted file mode 100644 index 38c4884..0000000 --- a/frontend/src/components/mantine/ThemeProvider.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { - ColorScheme, - ColorSchemeProvider, - MantineProvider, -} from "@mantine/core"; -import { ModalsProvider } from "@mantine/modals"; -import { setCookies } from "cookies-next"; -import { Dispatch, ReactNode, SetStateAction } from "react"; -import mantineTheme from "../../styles/mantine.style"; - -const ThemeProvider = ({ - children, - colorScheme, - setColorScheme, -}: { - children: ReactNode; - colorScheme: ColorScheme; - setColorScheme: Dispatch>; -}) => { - const toggleColorScheme = (value?: ColorScheme) => { - const nextColorScheme = - value || (colorScheme === "dark" ? "light" : "dark"); - setColorScheme(nextColorScheme); - setCookies("mantine-color-scheme", nextColorScheme, { - maxAge: 60 * 60 * 24 * 30, - }); - }; - - return ( - - - {children} - - - ); -}; - -export default ThemeProvider; diff --git a/frontend/src/components/navBar/ActionAvatar.tsx b/frontend/src/components/navBar/ActionAvatar.tsx index 6aae7bb..7ccc4fb 100644 --- a/frontend/src/components/navBar/ActionAvatar.tsx +++ b/frontend/src/components/navBar/ActionAvatar.tsx @@ -1,8 +1,7 @@ import { ActionIcon, Avatar, Menu } from "@mantine/core"; import { NextLink } from "@mantine/next"; -import { DoorExit, Link, Moon } from "tabler-icons-react"; +import { DoorExit, Link } from "tabler-icons-react"; import authService from "../../services/auth.service"; -import ToggleThemeButton from "./ToggleThemeButton"; const ActionAvatar = () => { return ( @@ -13,13 +12,12 @@ const ActionAvatar = () => { - My account } > - Shares + My shares { @@ -29,10 +27,6 @@ const ActionAvatar = () => { > Sign out - Settings - }> - - ); diff --git a/frontend/src/components/navBar/NavBar.tsx b/frontend/src/components/navBar/NavBar.tsx index 38a55e1..49be6ba 100644 --- a/frontend/src/components/navBar/NavBar.tsx +++ b/frontend/src/components/navBar/NavBar.tsx @@ -1,4 +1,5 @@ import { + Box, Burger, Container, createStyles, @@ -111,7 +112,7 @@ const NavBar = () => { const user = useUser(); const [opened, toggleOpened] = useDisclosure(false); - const [authenticatedLinks, setAuthenticatedLinks] = useState([ + const authenticatedLinks = [ { link: "/upload", label: "Upload", @@ -119,7 +120,7 @@ const NavBar = () => { { component: , }, - ]); + ]; const [unauthenticatedLinks, setUnauthenticatedLinks] = useState([ { @@ -149,16 +150,15 @@ const NavBar = () => { }, []); const { classes, cx } = useStyles(); - console.log(user); const items = ( <> {(user ? authenticatedLinks : unauthenticatedLinks).map((link) => { if (link.component) { return ( <> - + {link.component} - + ); } @@ -185,8 +185,8 @@ const NavBar = () => { Pinvgin Share Logo Pingvin Share diff --git a/frontend/src/components/navBar/ToggleThemeButton.tsx b/frontend/src/components/navBar/ToggleThemeButton.tsx deleted file mode 100644 index 6542d7b..0000000 --- a/frontend/src/components/navBar/ToggleThemeButton.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Switch, useMantineColorScheme } from "@mantine/core"; - -const ToggleThemeButton = () => { - const { colorScheme, toggleColorScheme } = useMantineColorScheme(); - - return ( - - toggleColorScheme(v.currentTarget.checked ? "dark" : "light") - } - onLabel="ON" - offLabel="OFF" - /> - ); -}; - -export default ToggleThemeButton; diff --git a/frontend/src/pages/_app.tsx b/frontend/src/pages/_app.tsx index 2d805ff..5af23cd 100644 --- a/frontend/src/pages/_app.tsx +++ b/frontend/src/pages/_app.tsx @@ -5,15 +5,14 @@ import { MantineProvider, Stack, } from "@mantine/core"; +import { useColorScheme } from "@mantine/hooks"; import { ModalsProvider } from "@mantine/modals"; import { NotificationsProvider } from "@mantine/notifications"; -import { getCookie } from "cookies-next"; +import { getCookie, setCookies } from "cookies-next"; import { GetServerSidePropsContext } from "next"; import type { AppProps } from "next/app"; -import getConfig from "next/config"; import { useEffect, useState } from "react"; import Footer from "../components/Footer"; -import ThemeProvider from "../components/mantine/ThemeProvider"; import Header from "../components/navBar/NavBar"; import { UserContext } from "../hooks/user.hook"; import authService from "../services/auth.service"; @@ -23,12 +22,13 @@ import globalStyle from "../styles/mantine.style"; import { CurrentUser } from "../types/user.type"; import { GlobalLoadingContext } from "../utils/loading.util"; -const { publicRuntimeConfig } = getConfig() - function App( props: AppProps & { colorScheme: ColorScheme; environmentVariables: any } ) { const { Component, pageProps } = props; + + const systemTheme = useColorScheme(); + const [colorScheme, setColorScheme] = useState( props.colorScheme ); @@ -36,43 +36,52 @@ function App( const [user, setUser] = useState(null); const getInitalData = async () => { - console.log(publicRuntimeConfig) setIsLoading(true); setUser(await userService.getCurrentUser()); - setIsLoading(false); }; + useEffect(() => { setInterval(async () => await authService.refreshAccessToken(), 30 * 1000); getInitalData(); }, []); + + useEffect(() => { + setCookies("mantine-color-scheme", systemTheme, { + maxAge: 60 * 60 * 24 * 30, + }); + setColorScheme(systemTheme); + }, [systemTheme]); + return ( - - - - - - - {isLoading ? ( - - ) : ( - - - -
-
- - - -
-