@@ -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()