Explorar o código

feat(files): improve file deletion process with detailed logging and error handling

vtugulan hai 6 meses
pai
achega
3221550747
Modificáronse 1 ficheiros con 35 adicións e 13 borrados
  1. 35 13
      app/components/filesTable.tsx

+ 35 - 13
app/components/filesTable.tsx

@@ -256,27 +256,49 @@ export function FilesTable({ onFileAdded }: FilesTableProps) {
     if (!confirmDelete) return;
 
     try {
-      const deletePromises = selectedRows.map(async (row) => {
-        const response = await fetch(`/api/files/${row.original.id}`, {
-          method: 'DELETE',
-        });
-        
-        if (!response.ok) {
-          throw new Error(`Failed to delete file: ${row.original.filename}`);
+      const fileIds = selectedRows.map(row => row.original.id);
+      const fileNames = selectedRows.map(row => row.original.filename);
+      
+      console.log(`Deleting ${fileIds.length} files:`, fileNames);
+      
+      // Process deletions sequentially to avoid race conditions
+      const results = [];
+      for (const row of selectedRows) {
+        try {
+          const response = await fetch(`/api/files/${row.original.id}`, {
+            method: 'DELETE',
+          });
+          
+          if (!response.ok) {
+            const errorText = await response.text();
+            console.error(`Failed to delete ${row.original.filename}:`, errorText);
+            results.push({ id: row.original.id, success: false, error: errorText });
+          } else {
+            console.log(`Successfully deleted: ${row.original.filename}`);
+            results.push({ id: row.original.id, success: true });
+          }
+        } catch (error) {
+          console.error(`Error deleting ${row.original.filename}:`, error);
+          results.push({ id: row.original.id, success: false, error: String(error) });
         }
-        
-        return row.original.id;
-      });
+      }
 
-      await Promise.all(deletePromises);
+      const successful = results.filter(r => r.success).length;
+      const failed = results.filter(r => !r.success).length;
+      
+      if (failed > 0) {
+        alert(`${successful} file(s) deleted successfully, ${failed} failed. Check console for details.`);
+      } else {
+        alert(`${successful} file(s) deleted successfully.`);
+      }
       
       // Clear selection and refresh the table
       setRowSelection({});
       refetch();
       
     } catch (error) {
-      console.error('Error deleting files:', error);
-      alert('Failed to delete some files. Please try again.');
+      console.error('Error in delete process:', error);
+      alert('Failed to delete files. Please try again.');
     }
   };