"use client"; import { Button } from "@usesend/ui/src/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@usesend/ui/src/dialog"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@usesend/ui/src/form"; import { api } from "~/trpc/react"; import { useState } from "react"; import { PencilIcon } from "lucide-react"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { toast } from "@usesend/ui/src/toaster"; import { Role } from "@prisma/client"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@usesend/ui/src/select"; const teamUserSchema = z.object({ role: z.enum(["MEMBER", "ADMIN"]), }); export const EditTeamMember: React.FC<{ teamUser: { userId: string; role: Role }; }> = ({ teamUser }) => { const [open, setOpen] = useState(false); const updateTeamUserMutation = api.team.updateTeamUserRole.useMutation(); const utils = api.useUtils(); const teamUserForm = useForm>({ resolver: zodResolver(teamUserSchema), defaultValues: { role: teamUser.role, }, }); async function onTeamUserUpdate(values: z.infer) { updateTeamUserMutation.mutate( { userId: teamUser.userId, role: values.role, }, { onSuccess: async () => { utils.team.getTeamUsers.invalidate(); setOpen(false); toast.success("Team member role updated successfully"); }, onError: async (error) => { toast.error(error.message); }, } ); } return ( (_open !== open ? setOpen(_open) : null)} > Edit Team Member Role
( Role )} />
); }; export default EditTeamMember;