import { createSignal, Show } from "solid-js"; import { getAtk, useUserinfo } from "../stores/userinfo.tsx"; import styles from "./PostPublish.module.css"; export default function PostPublish(props: { replying?: any, reposting?: any, editing?: any, onError: (message: string | null) => void, onPost: () => void }) { const userinfo = useUserinfo(); const [submitting, setSubmitting] = createSignal(false); async function doPost(evt: SubmitEvent) { evt.preventDefault(); const form = evt.target as HTMLFormElement; const data = Object.fromEntries(new FormData(form)); if (!data.content) return; setSubmitting(true); const res = await fetch("/api/posts", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${getAtk()}` }, body: JSON.stringify({ alias: data.alias ?? crypto.randomUUID().replace(/-/g, ""), title: data.title, content: data.content, repost_to: props.reposting?.id, reply_to: props.replying?.id, }) }); if (res.status !== 200) { props.onError(await res.text()); } else { form.reset(); props.onPost(); props.onError(null); } setSubmitting(false); } return (
{userinfo?.displayName.substring(0, 1)}}> avatar