fix: debounce note title save to prevent focus leak to search field

This commit is contained in:
Hermes
2026-08-01 12:49:27 +00:00
parent 35d063ea82
commit 67214575fb
+6 -1
View File
@@ -55,6 +55,8 @@ function NotesPage() {
const [selectedNote, setSelectedNote] = useState<Note | null>(null); const [selectedNote, setSelectedNote] = useState<Note | null>(null);
const [editorContent, setEditorContent] = useState(""); const [editorContent, setEditorContent] = useState("");
const saveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null); const saveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
const titleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
const titleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
const [showBacklinks, setShowBacklinks] = useState(false); const [showBacklinks, setShowBacklinks] = useState(false);
const [showVersions, setShowVersions] = useState(false); const [showVersions, setShowVersions] = useState(false);
@@ -114,8 +116,11 @@ function NotesPage() {
const handleTitleChange = (title: string) => { const handleTitleChange = (title: string) => {
if (selectedNote) { if (selectedNote) {
updateMutation.mutate({ id: selectedNote.id, data: { title } });
setSelectedNote({ ...selectedNote, title }); setSelectedNote({ ...selectedNote, title });
if (titleTimerRef.current) clearTimeout(titleTimerRef.current);
titleTimerRef.current = setTimeout(() => {
updateMutation.mutate({ id: selectedNote.id, data: { title } });
}, 500);
} }
}; };