refactor: optimize bulk delete handler and UI feedback

- Refactored the bulk delete handler to utilize Promise.all for concurrent deletion of features, improving performance and error handling.
- Updated the BoardView component to handle deletion results more effectively, providing user feedback for both successful and failed deletions.
- Enhanced local state management to avoid redundant API calls during feature deletion.
This commit is contained in:
Shirone
2026-01-11 11:17:28 +01:00
parent 7522e58fee
commit 6e4b611662
2 changed files with 32 additions and 22 deletions

View File

@@ -30,23 +30,22 @@ export function createBulkDeleteHandler(featureLoader: FeatureLoader) {
return;
}
const results: BulkDeleteResult[] = [];
for (const featureId of featureIds) {
try {
const results = await Promise.all(
featureIds.map(async (featureId) => {
const success = await featureLoader.delete(projectPath, featureId);
results.push({ featureId, success });
} catch (error) {
results.push({
if (success) {
return { featureId, success: true };
}
return {
featureId,
success: false,
error: getErrorMessage(error),
});
}
}
error: 'Deletion failed. Check server logs for details.',
};
})
);
const successCount = results.filter((r) => r.success).length;
const failureCount = results.filter((r) => !r.success).length;
const successCount = results.reduce((count, r) => count + (r.success ? 1 : 0), 0);
const failureCount = results.length - successCount;
res.json({
success: failureCount === 0,