From 9db41e886a2e73d2d50133209b71f4d6c893b2bb Mon Sep 17 00:00:00 2001 From: Pouzor Date: Sun, 10 May 2026 01:51:11 +0200 Subject: [PATCH] fix(pending): respect active filters when clearing pending devices Trash button in PendingDevicesModal now removes only filtered devices instead of wiping the whole pending list. Falls back to clearPending when no filters are active. --- .../components/modals/PendingDevicesModal.tsx | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) 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 && ( - )}