import type { NextPage, GetStaticProps } from "next"; import Head from "next/head"; import { GithubLogo, InstagramLogo, DiscordLogo, GameController, Envelope } from "phosphor-react"; import { useEffect, useRef,useCallback } from "react"; import { useCommands } from "../lib/commands/ContextProvider"; import { useModalFunctions } from "../components/contexts/ModalFunctions"; import ProjectModal from "../components/ProjectModal"; import REPL from "../components/REPL"; import styles from "../styles/Home.module.css"; import type { ContentList } from "../lib/content/types"; const Home: NextPage<{ buildTime: string }> = ({ buildTime }) => { const inputRef = useRef(null); const { modalFunctions } = useModalFunctions(); const { setContents } = useCommands(); const updateProjects = useCallback(async () => { try { const res = await fetch("/content/list.json"); const projects: ContentList = await res.json(); projects.sort((a, b) => { return a.name.localeCompare(b.name); }); setContents(projects); } catch {} }, [setContents]); const focusInput = () => { if (inputRef.current) inputRef.current.focus(); }; const hideModalOnEsc = (e: React.KeyboardEvent) => { if (e.key === "Escape") { e.preventDefault(); if(modalFunctions.setVisible) modalFunctions.setVisible(false); } }; useEffect(() => { updateProjects().then(() => { if (modalFunctions.onContentReady) modalFunctions.onContentReady(); }); const interval = setInterval(updateProjects, 30 * 1000); return () => clearInterval(interval); }, [updateProjects, modalFunctions]); return (
c0ntroller.de
  Source | Bug? | | | | | C0ntroller_Z#3883  
); }; export const getStaticProps: GetStaticProps = async (_context) => { const date = new Date(); const padD = (n: number) => n.toString().padStart(2, "0"); const buildTime = `${date.getUTCFullYear()}${padD(date.getUTCDate())}${padD(date.getUTCMonth() + 1)}-${padD(date.getUTCHours())}${padD(date.getUTCMinutes())}`; return { props: { buildTime } }; }; export default Home;