import { useNavigate } from "@solidjs/router"; import { JSXElement, Show, createSignal, onMount, useContext } from "solid-js"; import { LoginContext } from "../Context/GlobalState"; import { NewComment, createComment } from "../Util/api"; /** NewCommentInputArea is a component that allows users to submit a comment on a **post or comment**. * @param {Object} props The properties for the NewCommentInputArea component. * @param {number} props.parentPostId The id of the post that the comment is a reply to. * @returns {JSXElement} A JSXElement that contains a textarea and a submit button. */ export function NewCommentInputArea({ parentPostId, }: { parentPostId: number; }): JSXElement { const [content, setContent] = createSignal(""); const [waiting, setWaiting] = createSignal(false); // We assumte this context is always available const login_ctx = useContext(LoginContext)!; const nav = useNavigate(); const sendComment = (): void => { setWaiting(true); const response = createComment({ content: content(), user_token: login_ctx.token(), parent_post_id: parentPostId, } as NewComment); if (response) { response.then(() => { setWaiting(false); setContent(""); nav("/"); }); } }; // Bail out if not logged in onMount(() => { if (!login_ctx.loggedIn()) nav("/"); }); return ( } >