aboutsummaryrefslogtreecommitdiff
path: root/pages/_app.js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-09-25 00:44:40 +0700
committerGitHub <[email protected]>2023-09-25 00:44:40 +0700
commit1a85c2571690ba592ac5183d5eadaf9846fe532b (patch)
tree3f3552c00cd49c0eeab5275275cf5cf5666e5027 /pages/_app.js
parentDelete .github/workflows/deploy.yml (diff)
downloadmoopa-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.js110
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>
</>