import { Loading, Page, Text } from "@geist-ui/core"; import { useRouter } from "next/router"; import { useCallback, useEffect, useState } from "react"; import Document from '../../components/document' import Header from "../../components/header"; import UnauthenticatedHeader from "../../components/unauthenticated-header"; import VisibilityBadge from "../../components/visibility-badge"; import { ThemeProps } from "../_app"; const Post = ({ theme, changeTheme }: ThemeProps) => { const [post, setPost] = useState() const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState() const router = useRouter(); useEffect(() => { async function fetchPost() { setIsLoading(true); if (router.query.id) { const post = await fetch(`/api/posts/${router.query.id}`, { method: "GET", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("drift-token")}` } }) if (post.ok) { const res = await post.json() if (res) setPost(res) else setError("Post not found") } else { if (post.status.toString().startsWith("4")) { router.push("/signin") } else { setError(post.statusText) } } setIsLoading(false) } } fetchPost() }, [router, router.query.id]) const token = useCallback(() => { if (typeof window !== "undefined") { return localStorage.getItem("drift-token") } else { return "" } }, []) return ( {token() &&
} {!token() && } {error && {error}} {!error && (isLoading || !post?.files) && } {!isLoading && post && <>{post.title} {post.files.map(({ id, content, title }: { id: any, content: string, title: string }) => ( ))} } ) } export default Post