@@ -163,25 +163,52 @@ const CardsPage = () => {
163
163
} ;
164
164
165
165
const handleDelete = async ( selectedContents : number [ ] ) => {
166
- const promises = selectedContents . map ( ( content_id ) =>
167
- archiveContent ( content_id , token ! ) ,
168
- ) ;
166
+ const BATCH_SIZE = 20 ;
167
+ let successCount = 0 ;
168
+ let failedContentIds : number [ ] = [ ] ;
169
+
169
170
try {
170
- await Promise . all ( promises ) ;
171
- setSnackMessage ( {
172
- message : `Deleted ${ selectedContents . length } content${
173
- selectedContents . length > 1 ? "s" : ""
174
- } `,
175
- color : "success" ,
176
- } ) ;
171
+ for ( let i = 0 ; i < selectedContents . length ; i += BATCH_SIZE ) {
172
+ const batch = selectedContents . slice ( i , i + BATCH_SIZE ) ;
173
+
174
+ const results = await Promise . all (
175
+ batch . map ( async ( content_id ) => {
176
+ try {
177
+ await archiveContent ( content_id , token ! ) ;
178
+ successCount ++ ;
179
+ return { success : true , content_id } ;
180
+ } catch ( error ) {
181
+ console . error ( `Failed to delete content ID ${ content_id } :` , error ) ;
182
+ failedContentIds . push ( content_id ) ;
183
+ return { success : false , content_id } ;
184
+ }
185
+ } ) ,
186
+ ) ;
187
+ }
188
+
189
+ if ( failedContentIds . length === 0 ) {
190
+ setSnackMessage ( {
191
+ message : `Successfully deleted ${ successCount } content${
192
+ successCount > 1 ? "s" : ""
193
+ } `,
194
+ color : "success" ,
195
+ } ) ;
196
+ } else {
197
+ setSnackMessage ( {
198
+ message : `Deleted ${ successCount } content${
199
+ successCount > 1 ? "s" : ""
200
+ } , failed to delete ${ failedContentIds . length } `,
201
+ color : "warning" ,
202
+ } ) ;
203
+ }
177
204
} catch ( error ) {
178
- console . error ( "Failed to delete content :" , error ) ;
205
+ console . error ( "Unexpected error during batch deletion :" , error ) ;
179
206
setSnackMessage ( {
180
- message : `Failed to delete content` ,
207
+ message : "An unexpected error occurred during deletion" ,
181
208
color : "error" ,
182
209
} ) ;
183
210
} finally {
184
- setSelectedContents ( [ ] ) ;
211
+ setSelectedContents ( failedContentIds ) ;
185
212
setOpenBulkDeleteModal ( false ) ;
186
213
setRefreshKey ( ( prevKey ) => prevKey + 1 ) ;
187
214
}
0 commit comments