From fcfa621a7414eacd0802a34b4b74e9ab4088c9ed Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Tue, 16 Dec 2025 07:48:00 +0000 Subject: [PATCH] refactor: remove unused useRoles and usePermissions hooks after migration --- surfsense_web/hooks/use-rbac.ts | 188 -------------------------------- 1 file changed, 188 deletions(-) diff --git a/surfsense_web/hooks/use-rbac.ts b/surfsense_web/hooks/use-rbac.ts index ee3450746..fa619407a 100644 --- a/surfsense_web/hooks/use-rbac.ts +++ b/surfsense_web/hooks/use-rbac.ts @@ -218,137 +218,6 @@ export function useMembers(searchSpaceId: number) { // ============ Roles Hook ============ -export function useRoles(searchSpaceId: number) { - const [roles, setRoles] = useState([]); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); - - const fetchRoles = useCallback(async () => { - if (!searchSpaceId) return; - - try { - setLoading(true); - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/searchspaces/${searchSpaceId}/roles`, - { method: "GET" } - ); - - if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.detail || "Failed to fetch roles"); - } - - const data = await response.json(); - setRoles(data); - setError(null); - return data; - } catch (err: any) { - setError(err.message || "Failed to fetch roles"); - console.error("Error fetching roles:", err); - } finally { - setLoading(false); - } - }, [searchSpaceId]); - - useEffect(() => { - fetchRoles(); - }, [fetchRoles]); - - const createRole = useCallback( - async (roleData: RoleCreate) => { - try { - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/searchspaces/${searchSpaceId}/roles`, - { - headers: { "Content-Type": "application/json" }, - method: "POST", - body: JSON.stringify(roleData), - } - ); - - if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.detail || "Failed to create role"); - } - - const newRole = await response.json(); - setRoles((prev) => [...prev, newRole]); - toast.success("Role created successfully"); - return newRole; - } catch (err: any) { - toast.error(err.message || "Failed to create role"); - throw err; - } - }, - [searchSpaceId] - ); - - const updateRole = useCallback( - async (roleId: number, roleData: RoleUpdate) => { - try { - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/searchspaces/${searchSpaceId}/roles/${roleId}`, - { - headers: { "Content-Type": "application/json" }, - method: "PUT", - body: JSON.stringify(roleData), - } - ); - - if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.detail || "Failed to update role"); - } - - const updatedRole = await response.json(); - setRoles((prev) => prev.map((r) => (r.id === roleId ? updatedRole : r))); - toast.success("Role updated successfully"); - return updatedRole; - } catch (err: any) { - toast.error(err.message || "Failed to update role"); - throw err; - } - }, - [searchSpaceId] - ); - - const deleteRole = useCallback( - async (roleId: number) => { - try { - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/searchspaces/${searchSpaceId}/roles/${roleId}`, - { method: "DELETE" } - ); - - if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.detail || "Failed to delete role"); - } - - setRoles((prev) => prev.filter((r) => r.id !== roleId)); - toast.success("Role deleted successfully"); - return true; - } catch (err: any) { - toast.error(err.message || "Failed to delete role"); - return false; - } - }, - [searchSpaceId] - ); - - return { - roles, - loading, - error, - fetchRoles, - createRole, - updateRole, - deleteRole, - }; -} - -// ============ Invites Hook ============ - export function useInvites(searchSpaceId: number) { const [invites, setInvites] = useState([]); const [loading, setLoading] = useState(true); @@ -480,63 +349,6 @@ export function useInvites(searchSpaceId: number) { // ============ Permissions Hook ============ -export function usePermissions() { - const [permissions, setPermissions] = useState([]); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); - - const fetchPermissions = useCallback(async () => { - try { - setLoading(true); - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/permissions`, - { method: "GET" } - ); - - if (!response.ok) { - const errorData = await response.json().catch(() => ({})); - throw new Error(errorData.detail || "Failed to fetch permissions"); - } - - const data = await response.json(); - setPermissions(data.permissions); - setError(null); - return data.permissions; - } catch (err: any) { - setError(err.message || "Failed to fetch permissions"); - console.error("Error fetching permissions:", err); - } finally { - setLoading(false); - } - }, []); - - useEffect(() => { - fetchPermissions(); - }, [fetchPermissions]); - - // Group permissions by category - const groupedPermissions = useMemo(() => { - const groups: Record = {}; - for (const perm of permissions) { - if (!groups[perm.category]) { - groups[perm.category] = []; - } - groups[perm.category].push(perm); - } - return groups; - }, [permissions]); - - return { - permissions, - groupedPermissions, - loading, - error, - fetchPermissions, - }; -} - -// ============ User Access Hook ============ - export function useUserAccess(searchSpaceId: number) { const [access, setAccess] = useState(null); const [loading, setLoading] = useState(true);