diff options
| author | Factiven <[email protected]> | 2023-09-25 00:44:40 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-25 00:44:40 +0700 |
| commit | 1a85c2571690ba592ac5183d5eadaf9846fe532b (patch) | |
| tree | 3f3552c00cd49c0eeab5275275cf5cf5666e5027 /pages/_app.js | |
| parent | Delete .github/workflows/deploy.yml (diff) | |
| download | moopa-4.1.0.tar.xz moopa-4.1.0.zip | |
Update v4.1.0 (#79)v4.1.0
* Update v4.1.0
* Update pages/_app.js
Diffstat (limited to 'pages/_app.js')
| -rw-r--r-- | pages/_app.js | 110 |
1 files changed, 77 insertions, 33 deletions
diff --git a/pages/_app.js b/pages/_app.js index 5303b71..68b4acd 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -6,9 +6,13 @@ import "../styles/globals.css"; import "react-toastify/dist/ReactToastify.css"; import "react-loading-skeleton/dist/skeleton.css"; import { SkeletonTheme } from "react-loading-skeleton"; -import SearchPalette from "../components/searchPalette"; -import { SearchProvider } from "../lib/hooks/isOpenState"; +import SearchPalette from "@/components/searchPalette"; +import { SearchProvider } from "@/lib/hooks/isOpenState"; import Head from "next/head"; +import { WatchPageProvider } from "@/lib/hooks/watchPageProvider"; +import { ToastContainer, toast } from "react-toastify"; +import { useEffect } from "react"; +import { unixTimestampToRelativeTime } from "@/utils/getTimes"; export default function App({ Component, @@ -16,6 +20,42 @@ export default function App({ }) { const router = useRouter(); + useEffect(() => { + async function getBroadcast() { + try { + const res = await fetch("/api/v2/admin/broadcast", { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Broadcast-Key": "get-broadcast", + }, + }); + const data = await res.json(); + if ( + data && + data?.message !== "No broadcast" && + data?.message !== "unauthorized" + ) { + toast(data.message + unixTimestampToRelativeTime(data.startAt), { + position: "top-center", + autoClose: false, + closeOnClick: true, + draggable: true, + theme: "colored", + className: "toaster", + style: { + background: "#232329", + color: "#fff", + }, + }); + } + } catch (err) { + console.log(err); + } + } + getBroadcast(); + }, []); + return ( <> <Head> @@ -26,37 +66,41 @@ export default function App({ </Head> <SessionProvider session={session}> <SearchProvider> - <AnimatePresence mode="wait"> - <SkeletonTheme baseColor="#232329" highlightColor="#2a2a32"> - <m.div - key={`route-${router.route}`} - transition={{ duration: 0.5 }} - initial="initialState" - animate="animateState" - exit="exitState" - variants={{ - initialState: { - opacity: 0, - }, - animateState: { - opacity: 1, - }, - exitState: {}, - }} - className="z-50 w-screen" - > - <NextNProgress - color="#FF7E2C" - startPosition={0.3} - stopDelayMs={200} - height={3} - showOnShallow={true} - /> - <SearchPalette /> - <Component {...pageProps} /> - </m.div> - </SkeletonTheme> - </AnimatePresence> + <WatchPageProvider> + <AnimatePresence mode="wait"> + <SkeletonTheme baseColor="#232329" highlightColor="#2a2a32"> + <ToastContainer pauseOnFocusLoss={false} pauseOnHover={false} /> + <m.div + key={`route-${router.route}`} + transition={{ duration: 0.5 }} + initial="initialState" + animate="animateState" + exit="exitState" + variants={{ + initialState: { + opacity: 0, + }, + animateState: { + opacity: 1, + }, + exitState: {}, + }} + className="z-50 w-screen" + > + <NextNProgress + color="#FF7E2C" + startPosition={0.3} + stopDelayMs={200} + height={3} + showOnShallow={true} + /> + + <SearchPalette /> + <Component {...pageProps} /> + </m.div> + </SkeletonTheme> + </AnimatePresence> + </WatchPageProvider> </SearchProvider> </SessionProvider> </> |