From bf76f729aa8661ad23d78e06aa01ff6838ea382a Mon Sep 17 00:00:00 2001 From: Yared Yemane Date: Thu, 16 Apr 2026 01:34:04 -0700 Subject: [PATCH] Fix role list refresh after deletion Made-with: Cursor --- src/pages/role-management/RolesListPage.tsx | 41 +++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/pages/role-management/RolesListPage.tsx b/src/pages/role-management/RolesListPage.tsx index fc4140e..78f0072 100644 --- a/src/pages/role-management/RolesListPage.tsx +++ b/src/pages/role-management/RolesListPage.tsx @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from "react" +import { useCallback, useEffect, useMemo, useState } from "react" import { useNavigate } from "react-router-dom" import { Plus, @@ -81,27 +81,28 @@ export function RolesListPage() { return () => clearTimeout(timer) }, [query]) + const fetchRoles = useCallback(async () => { + setLoading(true) + setError(null) + try { + const res = await getRoles({ + query: debouncedQuery || undefined, + page, + page_size: pageSize, + }) + setRoles(res.data.data.roles ?? []) + setTotal(res.data.data.total ?? 0) + } catch { + setError("Failed to load roles.") + } finally { + setLoading(false) + } + }, [debouncedQuery, page, pageSize]) + // Fetch roles useEffect(() => { - const fetchRoles = async () => { - setLoading(true) - setError(null) - try { - const res = await getRoles({ - query: debouncedQuery || undefined, - page, - page_size: pageSize, - }) - setRoles(res.data.data.roles ?? []) - setTotal(res.data.data.total ?? 0) - } catch { - setError("Failed to load roles.") - } finally { - setLoading(false) - } - } fetchRoles() - }, [debouncedQuery, page, pageSize]) + }, [fetchRoles]) // Open role detail const handleViewRole = async (roleId: number) => { @@ -147,7 +148,7 @@ export function RolesListPage() { setRoleToDelete(null) setDeleteDialogOpen(false) - setPage(1) // trigger list refresh via the existing effect + await fetchRoles() } catch (err: unknown) { const message = (err as { response?: { data?: { message?: string } } })?.response?.data?.message ??