// imports

import { useMutation } from "@tanstack/vue-query";
import { API_ENDPOINTS } from "~/constants";

// types

export type UpdateAccountRequest = {
    profile_photo?: File | null;
    first_name?: string;
    last_name?: string;
    phone?: string;
    gender?: string | undefined;
    email?: string;
    birth_date?: string;
};

const useUpdateAccount = () => {
    // state

    const { $axios: axios } = useNuxtApp();

    // methods

    const handleUpdateAccount = async (params: UpdateAccountRequest) => {
        const { data } = await axios.patch(
            API_ENDPOINTS.account.update,
            {
                ...params,
            },
            {
                headers: {
                    "Content-Type": "multipart/form-data",
                },
            }
        );
        return data;
    };

    return useMutation({
        mutationFn: (data: UpdateAccountRequest) => handleUpdateAccount(data),
    });
};

export default useUpdateAccount;
