refactor: migrate deleteRole to use mutation atom and remove useRoles dependency in team page

This commit is contained in:
CREDO23 2025-12-16 07:33:34 +00:00
parent cbe6a05253
commit b4cdf2dcc1

View file

@ -45,9 +45,9 @@ import { motion } from "motion/react";
import { useParams, useRouter } from "next/navigation"; import { useParams, useRouter } from "next/navigation";
import { useCallback, useMemo, useState } from "react"; import { useCallback, useMemo, useState } from "react";
import { toast } from "sonner"; import { toast } from "sonner";
import { createRoleMutationAtom, updateRoleMutationAtom } from "@/atoms/roles/roles-mutation.atoms"; import { createRoleMutationAtom, updateRoleMutationAtom, deleteRoleMutationAtom } from "@/atoms/roles/roles-mutation.atoms";
import { useAtomValue } from "jotai"; import { useAtomValue } from "jotai";
import type { CreateRoleRequest, UpdateRoleRequest } from "@/contracts/types/roles.types"; import type { CreateRoleRequest, UpdateRoleRequest, DeleteRoleRequest } from "@/contracts/types/roles.types";
import { rolesApiService } from "@/lib/apis/roles-api.service"; import { rolesApiService } from "@/lib/apis/roles-api.service";
import { cacheKeys } from "@/lib/query-client/cache-keys"; import { cacheKeys } from "@/lib/query-client/cache-keys";
import { import {
@ -113,7 +113,6 @@ import {
useInvites, useInvites,
useMembers, useMembers,
usePermissions, usePermissions,
useRoles,
useUserAccess, useUserAccess,
} from "@/hooks/use-rbac"; } from "@/hooks/use-rbac";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
@ -155,12 +154,10 @@ export default function TeamManagementPage() {
updateMemberRole, updateMemberRole,
removeMember, removeMember,
} = useMembers(searchSpaceId); } = useMembers(searchSpaceId);
const {
deleteRole,
} = useRoles(searchSpaceId);
const { mutateAsync: createRole } = useAtomValue(createRoleMutationAtom); const { mutateAsync: createRole } = useAtomValue(createRoleMutationAtom);
const { mutateAsync: updateRole } = useAtomValue(updateRoleMutationAtom); const { mutateAsync: updateRole } = useAtomValue(updateRoleMutationAtom);
const { mutateAsync: deleteRole } = useAtomValue(deleteRoleMutationAtom);
const handleUpdateRole = useCallback( const handleUpdateRole = useCallback(
async (roleId: number, data: { permissions?: string[] }): Promise<Role> => { async (roleId: number, data: { permissions?: string[] }): Promise<Role> => {
@ -174,6 +171,18 @@ export default function TeamManagementPage() {
[updateRole, searchSpaceId] [updateRole, searchSpaceId]
); );
const handleDeleteRole = useCallback(
async (roleId: number): Promise<boolean> => {
const request: DeleteRoleRequest = {
search_space_id: searchSpaceId,
role_id: roleId,
};
await deleteRole(request);
return true;
},
[deleteRole, searchSpaceId]
);
const handleCreateRole = useCallback( const handleCreateRole = useCallback(
async (roleData: CreateRoleRequest['data']): Promise<Role> => { async (roleData: CreateRoleRequest['data']): Promise<Role> => {
const request: CreateRoleRequest = { const request: CreateRoleRequest = {
@ -388,7 +397,7 @@ export default function TeamManagementPage() {
groupedPermissions={groupedPermissions} groupedPermissions={groupedPermissions}
loading={rolesLoading} loading={rolesLoading}
onUpdateRole={handleUpdateRole} onUpdateRole={handleUpdateRole}
onDeleteRole={deleteRole} onDeleteRole={handleDeleteRole}
canUpdate={hasPermission("roles:update")} canUpdate={hasPermission("roles:update")}
canDelete={hasPermission("roles:delete")} canDelete={hasPermission("roles:delete")}
/> />