@@ -16,6 +16,7 @@ import {
1616 Divider ,
1717 Flex ,
1818 Input ,
19+ Tag ,
1920 Tooltip ,
2021 Typography ,
2122 message ,
@@ -30,6 +31,7 @@ import {
3031 EditOutlined ,
3132 ExpandAltOutlined ,
3233 LineChartOutlined ,
34+ LoadingOutlined ,
3335 NodeCollapseOutlined ,
3436 NodeExpandOutlined ,
3537 PartitionOutlined ,
@@ -316,33 +318,19 @@ export default function BucketDetail(props: Readonly<Props>) {
316318 } = useBulkDelete ( {
317319 onDelete : async ( entryName ) => {
318320 if ( ! info ) throw new Error ( "No bucket info" ) ;
319- const prefix = `${ entryName } /` ;
321+ const bucket : Bucket = await props . client . getBucket ( info . name ) ;
322+ await bucket . removeEntry ( entryName ) ;
323+ } ,
324+ onStart : ( keys ) => {
320325 setEntries ( ( prev ) =>
321326 prev . map ( ( entry ) =>
322- entry . name === entryName || entry . name . startsWith ( prefix )
327+ keys . some (
328+ ( key ) => entry . name === key || entry . name . startsWith ( `${ key } /` ) ,
329+ )
323330 ? { ...entry , status : Status . DELETING }
324331 : entry ,
325332 ) ,
326333 ) ;
327- try {
328- const bucket : Bucket = await props . client . getBucket ( info . name ) ;
329- await bucket . removeEntry ( entryName ) ;
330- setEntries ( ( prev ) =>
331- prev . filter (
332- ( entry ) =>
333- entry . name !== entryName && ! entry . name . startsWith ( prefix ) ,
334- ) ,
335- ) ;
336- } catch ( err ) {
337- setEntries ( ( prev ) =>
338- prev . map ( ( entry ) =>
339- entry . name === entryName || entry . name . startsWith ( prefix )
340- ? { ...entry , status : Status . READY }
341- : entry ,
342- ) ,
343- ) ;
344- throw err ;
345- }
346334 } ,
347335 onSuccess : ( ) => {
348336 setIsBulkDeleteOpen ( false ) ;
@@ -462,7 +450,20 @@ export default function BucketDetail(props: Readonly<Props>) {
462450 { row . name }
463451 </ Typography . Link >
464452 ) : (
465- < Typography . Text > { row . name } </ Typography . Text >
453+ < Typography . Text
454+ style = { isDeleting ? { color : "#bfbfbf" } : undefined }
455+ >
456+ { row . name }
457+ </ Typography . Text >
458+ ) }
459+ { isDeleting && (
460+ < Tag
461+ color = "processing"
462+ icon = { < LoadingOutlined spin /> }
463+ style = { { marginLeft : 4 } }
464+ >
465+ Deleting
466+ </ Tag >
466467 ) }
467468 { ! row . ownEntryName &&
468469 row . children &&
0 commit comments