import { useState } from "react"; import { Text } from "@/components/ui/text"; import { vendorPortalApi } from "@/domain/vendor-portal/api/vendor-portal-api"; import { formatVendorPortalDateTime } from "@/domain/vendor-portal/lib/status-helpers"; import type { VendorPortalComment } from "@/domain/vendor-portal/types/vendor-portal"; type CommentsSectionProps = { token: string; dispatchId: number; comments: VendorPortalComment[]; onAdded: (comment: VendorPortalComment) => void; }; export function CommentsSection({ token, dispatchId, comments, onAdded }: CommentsSectionProps) { const [text, setText] = useState(""); const [submitting, setSubmitting] = useState(false); const [errorMessage, setErrorMessage] = useState(""); const submit = async (event: React.FormEvent) => { event.preventDefault(); if (!text.trim()) return; setErrorMessage(""); setSubmitting(true); try { const added = await vendorPortalApi.addComment(token, dispatchId, text.trim()); onAdded(added); setText(""); } catch { setErrorMessage("Unable to post your comment. Please try again."); } finally { setSubmitting(false); } }; return ( <> {comments.length === 0 && No comments yet.} {comments.map((comment) => (
{comment.commenter || "Unknown"} · {formatVendorPortalDateTime(comment.createdDate)}
{comment.commenttext}
))} {errorMessage}
void submit(event)} style={{ marginTop: 12 }}>