import { type Component, createSignal, createEffect, Show } from "solid-js"; import CommentSection from "@/components/CommentSection"; import { formatDate } from "@/utils"; import { useAuth } from "@/context/AuthContext"; import type { BlogPost } from "@/api/blog"; interface BlogModalProps { blog: BlogPost; onClose: () => void; onLike: (blogId: number) => void; onAddComment: (content: string) => Promise; onUpdateBlog?: ( blogId: number, title: string, content: string, ) => Promise; onDeleteBlog?: (blogId: number) => Promise; onUpdateComment?: (commentId: number, content: string) => Promise; onDeleteComment?: (commentId: number) => Promise; initialEditMode?: boolean; } const BlogModal: Component = (props) => { const { user } = useAuth(); const [isEditing, setIsEditing] = createSignal(false); const [editTitle, setEditTitle] = createSignal(""); const [editContent, setEditContent] = createSignal(""); const isOwner = () => user()?.userId === props.blog?.patientId; createEffect(() => { if (props.initialEditMode && props.blog) { setEditTitle(props.blog.title || ""); setEditContent(props.blog.content || ""); setIsEditing(true); } }); const startEdit = () => { setEditTitle(props.blog?.title || ""); setEditContent(props.blog?.content || ""); setIsEditing(true); }; const cancelEdit = () => { setIsEditing(false); }; const saveEdit = async () => { if (props.onUpdateBlog && props.blog) { await props.onUpdateBlog(props.blog.idBlog, editTitle(), editContent()); setIsEditing(false); } }; const handleDelete = async () => { if ( props.onDeleteBlog && props.blog && confirm("Are you sure you want to delete this blog post?") ) { await props.onDeleteBlog(props.blog.idBlog); } }; return (
e.stopPropagation()} >
setEditTitle(e.currentTarget.value)} class="w-full text-3xl font-bold text-gray-900 border-b-2 border-blue-500 focus:outline-none" placeholder="Title" />
} >

{props.blog?.title}

{props.blog?.patientName} {formatDate(props.blog?.dateOfPost || "")}