import { createSignal, Show } from "solid-js"; import { useNavigate, useParams } from "@solidjs/router"; import { createStore } from "solid-js/store"; import { closeModel, openModel } from "../scripts/modals.ts"; import PostPublish from "../components/PostPublish.tsx"; import PostList from "../components/PostList.tsx"; import PostItem from "../components/PostItem.tsx"; import { getAtk } from "../stores/userinfo.tsx"; export default function PostPage() { const [error, setError] = createSignal(null); const [page, setPage] = createSignal(0); const [related, setRelated] = createSignal(null); const [info, setInfo] = createSignal(null); const params = useParams(); const navigate = useNavigate(); async function readPost(pn?: number) { if (pn) setPage(pn); const res = await fetch(`/api/posts/${params["postId"]}?` + new URLSearchParams({ take: (10).toString(), offset: ((page() - 1) * 10).toString() })); if (res.status !== 200) { setError(await res.text()); } else { setError(null); const data = await res.json(); setInfo(data["data"]); setRelated({ count: data["count"], data: data["related"] }); } } readPost(); async function deletePost(item: any) { if (!confirm(`Are you sure to delete post#${item.id}?`)) return; const res = await fetch(`/api/posts/${item.id}`, { method: "DELETE", headers: { "Authorization": `Bearer ${getAtk()}` } }); if (res.status !== 200) { setError(await res.text()); } else { back(); setError(null); } } function setMeta(data: any, field: string, open = true) { const meta: { [id: string]: any } = { reposting: null, replying: null, editing: null }; meta[field] = data; setPublishMeta(meta); if (open) openModel("#post-publish"); else closeModel("#post-publish"); } const [publishMeta, setPublishMeta] = createStore({ replying: null, reposting: null, editing: null }); function back() { if (window.history.length > 0) { window.history.back(); } else { navigate("/"); } } return ( <>

Post #{info()?.id}

Creating fake news...

}> setMeta(item, "reposting")} onReply={(item) => setMeta(item, "replying")} onEdit={(item) => setMeta(item, "editing")} /> setMeta(item, "reposting")} onReply={(item) => setMeta(item, "replying")} onEdit={(item) => setMeta(item, "editing")} />
); }