import type { IssueResponse, ProjectResponse, UserRecord } from "@issue/shared"; import { X } from "lucide-react"; import { useEffect, useState } from "react"; import SmallUserDisplay from "@/components/small-user-display"; import { Button } from "@/components/ui/button"; import { UserSelect } from "@/components/user-select"; import { issue } from "@/lib/server"; import { issueID } from "@/lib/utils"; export function IssueDetailPane({ project, issueData, members, close, onIssueUpdate, }: { project: ProjectResponse; issueData: IssueResponse; members: UserRecord[]; close: () => void; onIssueUpdate?: () => void; }) { const [assigneeId, setAssigneeId] = useState( issueData.Issue.assigneeId?.toString() ?? "unassigned", ); useEffect(() => { setAssigneeId(issueData.Issue.assigneeId?.toString() ?? "unassigned"); }, [issueData.Issue.assigneeId]); const handleAssigneeChange = async (value: string) => { setAssigneeId(value); const newAssigneeId = value === "unassigned" ? null : Number(value); await issue.update({ issueId: issueData.Issue.id, assigneeId: newAssigneeId, onSuccess: () => { onIssueUpdate?.(); }, onError: (error) => { console.error("error updating assignee:", error); setAssigneeId(issueData.Issue.assigneeId?.toString() ?? "unassigned"); }, }); }; return (

{issueID(project.Project.key, issueData.Issue.number)}

{issueData.Issue.title}

{issueData.Issue.description !== "" && (

{issueData.Issue.description}

)}
Assignee:
Created by:
); }