MCPcopy
hub / github.com/fastapi/full-stack-fastapi-template / EditUser

Function EditUser

frontend/src/components/Admin/EditUser.tsx:59–237  ·  view source on GitHub ↗
({ user, onSuccess }: EditUserProps)

Source from the content-addressed store, hash-verified

57}
58
59const EditUser = ({ user, onSuccess }: EditUserProps) => {
60 const [isOpen, setIsOpen] = useState(false)
61 const queryClient = useQueryClient()
62 const { showSuccessToast, showErrorToast } = useCustomToast()
63
64 const form = useForm<FormData>({
65 resolver: zodResolver(formSchema),
66 mode: "onBlur",
67 criteriaMode: "all",
68 defaultValues: {
69 email: user.email,
70 full_name: user.full_name ?? undefined,
71 is_superuser: user.is_superuser,
72 is_active: user.is_active,
73 },
74 })
75
76 const mutation = useMutation({
77 mutationFn: (data: FormData) =>
78 UsersService.updateUser({ userId: user.id, requestBody: data }),
79 onSuccess: () => {
80 showSuccessToast("User updated successfully")
81 setIsOpen(false)
82 onSuccess()
83 },
84 onError: handleError.bind(showErrorToast),
85 onSettled: () => {
86 queryClient.invalidateQueries({ queryKey: ["users"] })
87 },
88 })
89
90 const onSubmit = (data: FormData) => {
91 // exclude confirm_password from submission data and remove password if empty
92 const { confirm_password: _, ...submitData } = data
93 if (!submitData.password) {
94 delete submitData.password
95 }
96 mutation.mutate(submitData)
97 }
98
99 return (
100 <Dialog open={isOpen} onOpenChange={setIsOpen}>
101 <DropdownMenuItem
102 onSelect={(e) => e.preventDefault()}
103 onClick={() => setIsOpen(true)}
104 >
105 <Pencil />
106 Edit User
107 </DropdownMenuItem>
108 <DialogContent className="sm:max-w-md">
109 <Form {...form}>
110 <form onSubmit={form.handleSubmit(onSubmit)}>
111 <DialogHeader>
112 <DialogTitle>Edit User</DialogTitle>
113 <DialogDescription>
114 Update the user details below.
115 </DialogDescription>
116 </DialogHeader>

Callers

nothing calls this directly

Calls 3

useCustomToastFunction · 0.85
showSuccessToastFunction · 0.85
updateUserMethod · 0.80

Tested by

no test coverage detected