Files
better-auth/demo/nextjs/data/user/update-user-mutation.ts

35 lines
899 B
TypeScript

import { useMutation, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";
import { authClient } from "@/lib/auth-client";
import { userKeys } from "./keys";
interface UpdateUserParams {
name?: string;
image?: string;
}
export async function updateUser(params: UpdateUserParams) {
const { data, error } = await authClient.updateUser(params);
if (error) throw new Error(error.message);
return data;
}
export type UpdateUserData = Awaited<ReturnType<typeof updateUser>>;
export const useUpdateUserMutation = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: updateUser,
onSuccess: async () => {
await queryClient.invalidateQueries({
queryKey: userKeys.session(),
});
toast.success("User updated successfully!");
},
onError: (error: any) => {
toast.error(error.message || "Failed to update user");
},
});
};