import { useEffect } from "react"; import "../styles/globals.css"; import type { AppProps } from "next/app"; import Head from "next/head"; import { SessionProvider } from "next-auth/react"; import { ThemeProvider } from "next-themes"; import { Toaster } from "react-hot-toast"; import { useRouter } from "next/router"; import { IdProvider } from "@radix-ui/react-id"; import { darkTheme, css } from "../stitches.config"; import Navigation from "../components/Navigation"; import { fetchFiles } from "../state/actions"; import state from "../state"; import TimeAgo from "javascript-time-ago"; import en from "javascript-time-ago/locale/en.json"; import { useSnapshot } from "valtio"; TimeAgo.setDefaultLocale(en.locale); TimeAgo.addLocale(en); function MyApp({ Component, pageProps: { session, ...pageProps } }: AppProps) { const router = useRouter(); const slug = router.query?.slug; const gistId = (Array.isArray(slug) && slug[0]) ?? null; const origin = "https://xrpl-hooks-ide.vercel.app"; // TODO: Change when site is deployed const shareImg = "/share-image.png"; const snap = useSnapshot(state); useEffect(() => { if (gistId && router.isReady) { fetchFiles(gistId); } else { if ( !gistId && router.isReady && !router.pathname.includes("/sign-in") && !snap.files.length && !snap.mainModalShowed ) { state.mainModalOpen = true; state.mainModalShowed = true; } } }, [ gistId, router.isReady, router.pathname, snap.files, snap.mainModalShowed, ]); return ( <> XRPL Hooks Editor ); } export default MyApp;