diff --git a/src/components/Workspace/DocumentTabs.tsx b/src/components/Workspace/DocumentTabs.tsx index ce7aeca..2e06af7 100644 --- a/src/components/Workspace/DocumentTabs.tsx +++ b/src/components/Workspace/DocumentTabs.tsx @@ -1,6 +1,7 @@ import { useCallback, useState } from 'react'; import { useWorkspaceStore } from '../../stores/workspaceStore'; import { useCreateDocument } from '../../hooks/useCreateDocument'; +import { useConfirm } from '../../hooks/useConfirm'; import Tab from './Tab'; import AddIcon from '@mui/icons-material/Add'; import EditIcon from '@mui/icons-material/Edit'; @@ -37,6 +38,7 @@ const DocumentTabs = () => { } = useWorkspaceStore(); const { handleNewDocument, NewDocumentDialog } = useCreateDocument(); + const { confirm, ConfirmDialogComponent } = useConfirm(); const [draggedIndex, setDraggedIndex] = useState(null); const [contextMenu, setContextMenu] = useState<{ @@ -124,11 +126,30 @@ const DocumentTabs = () => { setContextMenu(null); }, [contextMenu, closeDocument]); - const handleDeleteFromMenu = useCallback(() => { + const handleDeleteFromMenu = useCallback(async () => { if (!contextMenu) return; - deleteDocument(contextMenu.documentId); + + const meta = documentMetadata.get(contextMenu.documentId); + if (!meta) return; + + const confirmTitle = 'Delete Document'; + const confirmMessage = meta.isDirty + ? `"${meta.title}" has unsaved changes. Delete anyway?` + : `Are you sure you want to delete "${meta.title}"?`; + + const confirmed = await confirm({ + title: confirmTitle, + message: confirmMessage, + confirmLabel: 'Delete', + severity: 'danger', + }); + + if (confirmed) { + deleteDocument(contextMenu.documentId); + } + setContextMenu(null); - }, [contextMenu, deleteDocument]); + }, [contextMenu, documentMetadata, deleteDocument, confirm]); return (
@@ -219,6 +240,9 @@ const DocumentTabs = () => { /> )} + {/* Confirmation Dialog */} + {ConfirmDialogComponent} + {/* New Document Dialog */} {NewDocumentDialog}
diff --git a/src/stores/workspaceStore.ts b/src/stores/workspaceStore.ts index af5aad3..c464968 100644 --- a/src/stores/workspaceStore.ts +++ b/src/stores/workspaceStore.ts @@ -367,11 +367,6 @@ export const useWorkspaceStore = create((set, get) const state = get(); const metadata = state.documentMetadata.get(documentId); - const confirmed = window.confirm( - `Are you sure you want to delete "${metadata?.title}"? This cannot be undone.` - ); - if (!confirmed) return false; - const docTitle = metadata?.title || 'Untitled'; // Delete from storage