diff --git a/client/src/views/HomeView.vue b/client/src/views/HomeView.vue index c0f2c3d..83d5c27 100644 --- a/client/src/views/HomeView.vue +++ b/client/src/views/HomeView.vue @@ -252,7 +252,7 @@
@@ -261,6 +261,15 @@
Ready + @@ -308,6 +317,18 @@ + + +
@@ -315,9 +336,14 @@ import { ref, computed, onMounted } from 'vue' import { useRouter } from 'vue-router' import UploadModal from '../components/UploadModal.vue' +import ConfirmDialog from '../components/ConfirmDialog.vue' +import { useToast } from '../composables/useToast' const router = useRouter() +const toast = useToast() const showUploadModal = ref(false) +const showDeleteDialog = ref(false) +const documentToDelete = ref(null) const searchQuery = ref('') const loading = ref(false) const documents = ref([]) @@ -373,6 +399,45 @@ function handleSearch() { } } +function confirmDelete(doc, event) { + // Stop propagation to prevent navigation + event.stopPropagation() + documentToDelete.value = doc + showDeleteDialog.value = true +} + +async function handleDelete() { + if (!documentToDelete.value) return + + try { + const response = await fetch(`/api/documents/${documentToDelete.value.id}`, { + method: 'DELETE' + }) + + if (!response.ok) { + throw new Error('Failed to delete document') + } + + const data = await response.json() + toast.success(`"${documentToDelete.value.title}" deleted successfully`) + + // Remove from local list + documents.value = documents.value.filter(d => d.id !== documentToDelete.value.id) + + // Close dialog + showDeleteDialog.value = false + documentToDelete.value = null + } catch (error) { + console.error('Delete error:', error) + toast.error(`Failed to delete document: ${error.message}`) + } +} + +function cancelDelete() { + showDeleteDialog.value = false + documentToDelete.value = null +} + // Load documents on mount onMounted(() => { loadDocuments()