feat: migrate updateMemberRole to handleUpdateMember using jotai + tanstack query

This commit is contained in:
CREDO23 2025-12-17 08:19:30 +00:00
parent ceef916fba
commit 7bb840b62a

View file

@ -46,6 +46,8 @@ import { motion } from "motion/react";
import { useParams, useRouter } from "next/navigation";
import { useCallback, useMemo, useState } from "react";
import { toast } from "sonner";
import { updateMemberMutationAtom } from "@/atoms/members/members-mutation.atoms";
import type { UpdateMembershipRequest, Membership } from "@/contracts/types/members.types";
import { permissionsAtom } from "@/atoms/permissions/permissions-query.atoms";
import { membersAtom } from "@/atoms/members/members-query.atoms";
import {
@ -157,7 +159,6 @@ export default function TeamManagementPage() {
const { access, loading: accessLoading, hasPermission } = useUserAccess(searchSpaceId);
const {
updateMemberRole,
removeMember,
} = useMembers(searchSpaceId);
@ -167,6 +168,8 @@ export default function TeamManagementPage() {
const { mutateAsync: createRole } = useAtomValue(createRoleMutationAtom);
const { mutateAsync: updateRole } = useAtomValue(updateRoleMutationAtom);
const { mutateAsync: deleteRole } = useAtomValue(deleteRoleMutationAtom);
const { mutateAsync: updateMember } = useAtomValue(updateMemberMutationAtom);
const handleUpdateRole = useCallback(
async (roleId: number, data: { permissions?: string[] }): Promise<Role> => {
@ -203,6 +206,20 @@ export default function TeamManagementPage() {
[createRole, searchSpaceId]
);
const handleUpdateMember = useCallback(
async (membershipId: number, roleId: number | null): Promise<Member> => {
const request: UpdateMembershipRequest = {
search_space_id: searchSpaceId,
membership_id: membershipId,
data: {
role_id: roleId,
},
};
return await updateMember(request) as Member;
},
[updateMember, searchSpaceId]
);
const {
data: roles = [],
isLoading: rolesLoading,
@ -405,7 +422,7 @@ export default function TeamManagementPage() {
members={members}
roles={roles}
loading={membersLoading}
onUpdateRole={updateMemberRole}
onUpdateRole={handleUpdateMember}
onRemoveMember={removeMember}
canManageRoles={hasPermission("members:manage_roles")}
canRemove={hasPermission("members:remove")}