FauziIsyrinApridal commited on
Commit
65eda56
·
1 Parent(s): 06b1c18

update tabel aksi all

Browse files
Files changed (1) hide show
  1. components/FileTable.tsx +69 -1
components/FileTable.tsx CHANGED
@@ -42,6 +42,53 @@ export default function FileTable({ fetchData, ragData }: FileTableProps) {
42
  }
43
  }, [ragData]);
44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  const deleteItem = async (fileName: string) => {
46
  const confirmed = window.confirm(
47
  `Yakin ingin menghapus file "${fileName}"?`,
@@ -184,7 +231,28 @@ export default function FileTable({ fetchData, ragData }: FileTableProps) {
184
  <TableHead className="min-w-[240px]">Name</TableHead>
185
  <TableHead>Uploaded At</TableHead>
186
  <TableHead>File Size</TableHead>
187
- <TableHead></TableHead>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  </TableRow>
189
  </TableHeader>
190
  <TableBody>
 
42
  }
43
  }, [ragData]);
44
 
45
+ const downloadAllFiles = async () => {
46
+ if (!sortedData.length) return;
47
+
48
+ for (const item of sortedData) {
49
+ await downloadItem(item.name);
50
+ }
51
+ };
52
+
53
+ const deleteAllFiles = async () => {
54
+ const confirmed = window.confirm("Yakin ingin menghapus SEMUA file?");
55
+ if (!confirmed) return;
56
+
57
+ try {
58
+ const fileNames = sortedData.map((item) => item.name);
59
+ setLoadingMap(
60
+ fileNames.reduce((acc, name) => ({ ...acc, [name]: true }), {}),
61
+ );
62
+
63
+ const { error } = await supabase.storage
64
+ .from("pnp-bot-storage")
65
+ .remove(fileNames);
66
+
67
+ if (error) {
68
+ toast({
69
+ title: "Gagal menghapus semua file",
70
+ description: error.message,
71
+ variant: "destructive",
72
+ });
73
+ } else {
74
+ toast({
75
+ title: "Semua file berhasil dihapus",
76
+ description: `${fileNames.length} file telah dihapus.`,
77
+ });
78
+ fetchData(); // refresh data
79
+ }
80
+ } catch (err) {
81
+ console.error("Gagal menghapus semua file:", err);
82
+ toast({
83
+ title: "Terjadi kesalahan",
84
+ description: "Tidak dapat menghapus semua file.",
85
+ variant: "destructive",
86
+ });
87
+ } finally {
88
+ setLoadingMap({});
89
+ }
90
+ };
91
+
92
  const deleteItem = async (fileName: string) => {
93
  const confirmed = window.confirm(
94
  `Yakin ingin menghapus file "${fileName}"?`,
 
231
  <TableHead className="min-w-[240px]">Name</TableHead>
232
  <TableHead>Uploaded At</TableHead>
233
  <TableHead>File Size</TableHead>
234
+ <TableHead className="text-center">
235
+ <div className="flex justify-center gap-2">
236
+ <Button
237
+ size="sm"
238
+ variant="outline"
239
+ className="hover:bg-blue-600 hover:text-white"
240
+ onClick={downloadAllFiles}
241
+ >
242
+ <DownloadIcon className="mr-1 h-4 w-4" />
243
+ All
244
+ </Button>
245
+ <Button
246
+ size="sm"
247
+ variant="destructive"
248
+ className="hover:bg-red-800"
249
+ onClick={deleteAllFiles}
250
+ >
251
+ <TrashIcon className="mr-1 h-4 w-4" />
252
+ All
253
+ </Button>
254
+ </div>
255
+ </TableHead>
256
  </TableRow>
257
  </TableHeader>
258
  <TableBody>