From ebe9d9be483f6fc58fd21009f8d14d989e7259b9 Mon Sep 17 00:00:00 2001 From: Fringg Date: Fri, 24 Apr 2026 04:24:33 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20bulk=20actions=20frontend=20=E2=80=94=20?= =?UTF-8?q?selectedUserIds=20mapping,=20debounce=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix selectedUserIds: was mapping row keys as array indices instead of using them directly as user IDs (getRowId returns String(user.id)) - Add useEffect cleanup for search debounce timer on unmount --- src/pages/AdminBulkActions.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pages/AdminBulkActions.tsx b/src/pages/AdminBulkActions.tsx index 8a7bfa0..b561261 100644 --- a/src/pages/AdminBulkActions.tsx +++ b/src/pages/AdminBulkActions.tsx @@ -719,6 +719,11 @@ export default function AdminBulkActions() { }, 400); }; + // Cleanup debounce on unmount + useEffect(() => { + return () => clearTimeout(searchTimerRef.current); + }, []); + const handleSearchSubmit = (e: React.FormEvent) => { e.preventDefault(); clearTimeout(searchTimerRef.current); @@ -753,9 +758,9 @@ export default function AdminBulkActions() { const selectedUserIds = useMemo(() => { return Object.keys(rowSelection) .filter((k) => rowSelection[k]) - .map((idx) => users[Number(idx)]?.id) - .filter(Boolean); - }, [rowSelection, users]); + .map(Number) + .filter((id) => id > 0); + }, [rowSelection]); const handleOpenAction = (type: BulkActionType) => { setModal({ open: true, action: type, loading: false, result: null });