import Header from "@components/header/header" import PageSeo from "@components/page-seo" import VisibilityBadge from "@components/badges/visibility-badge" import DocumentComponent from '@components/view-document' import styles from './post-page.module.css' import homeStyles from '@styles/Home.module.css' import type { File, Post } from "@lib/types" import { Page, Button, Text, Badge, Tooltip, Spacer, ButtonDropdown, ButtonGroup, useMediaQuery } from "@geist-ui/core" import { useCallback, useEffect, useMemo, useState } from "react" import { timeAgo, timeUntil } from "@lib/time-ago" import Archive from '@geist-ui/icons/archive' import FileDropdown from "@components/file-dropdown" import ScrollToTop from "@components/scroll-to-top" import { useRouter } from "next/router" import ExpirationBadge from "@components/badges/expiration-badge" import CreatedAgoBadge from "@components/badges/created-ago-badge" import Cookies from "js-cookie" type Props = { post: Post } const PostPage = ({ post }: Props) => { const router = useRouter() const isMobile = useMediaQuery("mobile") const [isExpired, setIsExpired] = useState(post.expiresAt ? new Date(post.expiresAt) < new Date() : null) useEffect(() => { let interval: NodeJS.Timer | null = null; if (post.expiresAt) { interval = setInterval(() => { const expirationDate = new Date(post.expiresAt ? post.expiresAt : "") setIsExpired(expirationDate < new Date()) }, 4000) } return () => { if (interval) clearInterval(interval) } }, [post.expiresAt]) const onExpires = useCallback(() => { const isOwner = post.users ? post.users[0].id === Cookies.get("drift-userid") : false if (isExpired && !isOwner) { router.push("/expired") return <> } }, [isExpired, post.users, router]) const download = async () => { const downloadZip = (await import("client-zip")).downloadZip const blob = await downloadZip(post.files.map((file: any) => { return { name: file.title, input: file.content, lastModified: new Date(file.updatedAt) } })).blob() const link = document.createElement("a") link.href = URL.createObjectURL(blob) link.download = `${post.title}.zip` link.click() link.remove() } return (
{post.title} {/* If it hasn't expired, the badge can be too long */}
{/* {post.files.length > 1 && } */} {post.files.map(({ id, content, title }: File) => ( ))}
) } export default PostPage