mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-30 19:36:25 +02:00
feat: migrate removeMember to deleteMemberMutationAtom in team page
This commit is contained in:
parent
7bb840b62a
commit
6e288a59fb
2 changed files with 18 additions and 8 deletions
|
|
@ -46,8 +46,8 @@ 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 { updateMemberMutationAtom } from "@/atoms/members/members-mutation.atoms";
|
import { updateMemberMutationAtom, deleteMemberMutationAtom } from "@/atoms/members/members-mutation.atoms";
|
||||||
import type { UpdateMembershipRequest, Membership } from "@/contracts/types/members.types";
|
import type { UpdateMembershipRequest, DeleteMembershipRequest, Membership } from "@/contracts/types/members.types";
|
||||||
import { permissionsAtom } from "@/atoms/permissions/permissions-query.atoms";
|
import { permissionsAtom } from "@/atoms/permissions/permissions-query.atoms";
|
||||||
import { membersAtom } from "@/atoms/members/members-query.atoms";
|
import { membersAtom } from "@/atoms/members/members-query.atoms";
|
||||||
import {
|
import {
|
||||||
|
|
@ -121,7 +121,6 @@ import {
|
||||||
type InviteCreate,
|
type InviteCreate,
|
||||||
type Member,
|
type Member,
|
||||||
useInvites,
|
useInvites,
|
||||||
useMembers,
|
|
||||||
useUserAccess,
|
useUserAccess,
|
||||||
} from "@/hooks/use-rbac";
|
} from "@/hooks/use-rbac";
|
||||||
import { rolesApiService } from "@/lib/apis/roles-api.service";
|
import { rolesApiService } from "@/lib/apis/roles-api.service";
|
||||||
|
|
@ -158,9 +157,6 @@ export default function TeamManagementPage() {
|
||||||
const [activeTab, setActiveTab] = useState("members");
|
const [activeTab, setActiveTab] = useState("members");
|
||||||
|
|
||||||
const { access, loading: accessLoading, hasPermission } = useUserAccess(searchSpaceId);
|
const { access, loading: accessLoading, hasPermission } = useUserAccess(searchSpaceId);
|
||||||
const {
|
|
||||||
removeMember,
|
|
||||||
} = useMembers(searchSpaceId);
|
|
||||||
|
|
||||||
const { data: membersData = [], isLoading: membersLoading, refetch: fetchMembers } = useAtomValue(membersAtom);
|
const { data: membersData = [], isLoading: membersLoading, refetch: fetchMembers } = useAtomValue(membersAtom);
|
||||||
const members = membersData as Member[];
|
const members = membersData as Member[];
|
||||||
|
|
@ -170,6 +166,7 @@ export default function TeamManagementPage() {
|
||||||
const { mutateAsync: deleteRole } = useAtomValue(deleteRoleMutationAtom);
|
const { mutateAsync: deleteRole } = useAtomValue(deleteRoleMutationAtom);
|
||||||
const { mutateAsync: updateMember } = useAtomValue(updateMemberMutationAtom);
|
const { mutateAsync: updateMember } = useAtomValue(updateMemberMutationAtom);
|
||||||
|
|
||||||
|
const { mutateAsync: deleteMember } = useAtomValue(deleteMemberMutationAtom);
|
||||||
|
|
||||||
const handleUpdateRole = useCallback(
|
const handleUpdateRole = useCallback(
|
||||||
async (roleId: number, data: { permissions?: string[] }): Promise<Role> => {
|
async (roleId: number, data: { permissions?: string[] }): Promise<Role> => {
|
||||||
|
|
@ -220,6 +217,19 @@ export default function TeamManagementPage() {
|
||||||
[updateMember, searchSpaceId]
|
[updateMember, searchSpaceId]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const handleRemoveMember = useCallback(
|
||||||
|
async (membershipId: number) => {
|
||||||
|
const request: DeleteMembershipRequest = {
|
||||||
|
search_space_id: searchSpaceId,
|
||||||
|
membership_id: membershipId,
|
||||||
|
};
|
||||||
|
await deleteMember(request);
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
[deleteMember, searchSpaceId]
|
||||||
|
);
|
||||||
const {
|
const {
|
||||||
data: roles = [],
|
data: roles = [],
|
||||||
isLoading: rolesLoading,
|
isLoading: rolesLoading,
|
||||||
|
|
@ -423,7 +433,7 @@ export default function TeamManagementPage() {
|
||||||
roles={roles}
|
roles={roles}
|
||||||
loading={membersLoading}
|
loading={membersLoading}
|
||||||
onUpdateRole={handleUpdateMember}
|
onUpdateRole={handleUpdateMember}
|
||||||
onRemoveMember={removeMember}
|
onRemoveMember={handleRemoveMember}
|
||||||
canManageRoles={hasPermission("members:manage_roles")}
|
canManageRoles={hasPermission("members:manage_roles")}
|
||||||
canRemove={hasPermission("members:remove")}
|
canRemove={hasPermission("members:remove")}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ export const updateMembershipRequest = z.object({
|
||||||
search_space_id: z.number(),
|
search_space_id: z.number(),
|
||||||
membership_id: z.number(),
|
membership_id: z.number(),
|
||||||
data: z.object({
|
data: z.object({
|
||||||
role_id: z.number(),
|
role_id: z.number().nullable(),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue