diff --git a/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx index f432231f9..335245000 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx @@ -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 => { @@ -203,6 +206,20 @@ export default function TeamManagementPage() { [createRole, searchSpaceId] ); + const handleUpdateMember = useCallback( + async (membershipId: number, roleId: number | null): Promise => { + 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")}