import { useMutation } from '@tanstack/react-query'; import { z } from 'zod'; import { api } from '@/lib/api-client'; import { useUser } from '@/lib/auth'; import { MutationConfig } from '@/lib/react-query'; export const updateProfileInputSchema = z.object({ email: z.string().min(1, 'Required').email('Invalid email'), firstName: z.string().min(1, 'Required'), lastName: z.string().min(1, 'Required'), bio: z.string(), }); export type UpdateProfileInput = z.infer; export const updateProfile = ({ data }: { data: UpdateProfileInput }) => { return api.patch(`/users/profile`, data); }; type UseUpdateProfileOptions = { mutationConfig?: MutationConfig; }; export const useUpdateProfile = ({ mutationConfig, }: UseUpdateProfileOptions = {}) => { const { refetch: refetchUser } = useUser(); const { onSuccess, ...restConfig } = mutationConfig || {}; return useMutation({ onSuccess: (...args) => { refetchUser(); onSuccess?.(...args); }, ...restConfig, mutationFn: updateProfile, }); };