39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
// imports
|
|
|
|
import { useMutation } from "@tanstack/vue-query";
|
|
import { API_ENDPOINTS } from "~/constants";
|
|
|
|
// types
|
|
|
|
export type CreateOrUpdateAddressRequest = Omit<Address, "is_main">;
|
|
|
|
const useCreateOrUpdateAddress = (update: ComputedRef<Boolean>) => {
|
|
// state
|
|
|
|
const { $axios: axios } = useNuxtApp();
|
|
|
|
// method
|
|
|
|
const handleCreateOrUpdateAddress = async (
|
|
addressData: CreateOrUpdateAddressRequest
|
|
) => {
|
|
const { data } = await axios[update.value ? "put" : "post"](
|
|
update.value
|
|
? `${API_ENDPOINTS.account.address.update}/${addressData.id}`
|
|
: API_ENDPOINTS.account.address.create,
|
|
{
|
|
...addressData,
|
|
for_me: addressData.for_me == "بله" ? true : false,
|
|
}
|
|
);
|
|
return data;
|
|
};
|
|
|
|
return useMutation({
|
|
mutationFn: (addressData: CreateOrUpdateAddressRequest) =>
|
|
handleCreateOrUpdateAddress(addressData),
|
|
});
|
|
};
|
|
|
|
export default useCreateOrUpdateAddress;
|