diff --git a/frontend/src/components/modals/PendingDevicesModal.tsx b/frontend/src/components/modals/PendingDevicesModal.tsx index c9fa61f..41a86ee 100644 --- a/frontend/src/components/modals/PendingDevicesModal.tsx +++ b/frontend/src/components/modals/PendingDevicesModal.tsx @@ -224,11 +224,26 @@ export function PendingDevicesModal({ open, onClose, highlightId, initialStatus } const handleClearAll = async () => { + const targets = filtered + if (targets.length === 0) return + const filtersActive = targets.length !== devices.length try { - await scanApi.clearPending() - setDevices([]) - setSelectedIds(new Set()) - toast.success('Pending devices cleared') + if (filtersActive) { + const results = await Promise.allSettled(targets.map((d) => scanApi.ignore(d.id))) + const failed = results.filter((r) => r.status === 'rejected').length + const removedIds = new Set( + targets.filter((_, i) => results[i].status === 'fulfilled').map((d) => d.id) + ) + setDevices((prev) => prev.filter((d) => !removedIds.has(d.id))) + setSelectedIds(new Set()) + if (failed > 0) toast.error(`Removed ${removedIds.size}, ${failed} failed`) + else toast.success(`Removed ${removedIds.size} device${removedIds.size !== 1 ? 's' : ''}`) + } else { + await scanApi.clearPending() + setDevices([]) + setSelectedIds(new Set()) + toast.success('Pending devices cleared') + } } catch { toast.error('Failed to clear pending devices') } @@ -374,7 +389,11 @@ export function PendingDevicesModal({ open, onClose, highlightId, initialStatus {statusFilter === 'pending' && devices.length > 0 && ( - )}