diff --git a/web/src/app/(app)/notes/[noteId]/page.tsx b/web/src/app/(app)/notes/[noteId]/page.tsx index 425ce13..0e0763b 100644 --- a/web/src/app/(app)/notes/[noteId]/page.tsx +++ b/web/src/app/(app)/notes/[noteId]/page.tsx @@ -9,13 +9,14 @@ import { LinkedNotesPanel } from "@/components/LinkedNotesPanel"; import { TaskReviewPanel } from "@/components/TaskReviewPanel"; import { ArtifactPanel } from "@/components/ArtifactPanel"; import { AgentTimeline } from "@/components/AgentTimeline"; -import { getNoteDetail } from "@/lib/notes-client"; +import { getNoteDetail, updateNoteDetail } from "@/lib/notes-client"; import type { NoteDetail } from "@/lib/types"; export default function NoteDetailPage() { const params = useParams<{ noteId: string }>(); const noteId = params.noteId; const [note, setNote] = useState(null); + const [isSaving, setIsSaving] = useState(false); const [error, setError] = useState(null); useEffect(() => { @@ -28,6 +29,25 @@ export default function NoteDetailPage() { })(); }, [noteId]); + async function handleSave(updates: { title: string; body: string }) { + if (!note) { + return; + } + + setIsSaving(true); + + try { + await updateNoteDetail(note.id, note.workspaceId, updates); + const refreshed = await getNoteDetail(note.id); + setNote(refreshed); + setError(null); + } catch (err) { + setError(err instanceof Error ? err.message : "Unable to save note"); + } finally { + setIsSaving(false); + } + } + if (!note) { return ( Review: {note.metadata.reviewState}} + actions={
{isSaving ? "Saving" : `Review: ${note.metadata.reviewState}`}
} >
- +