33 lines
1002 B
TypeScript
Raw Normal View History

"use client";
import { useCallback } from "react";
import { useQueryClient } from "@tanstack/react-query";
import { queryKeys } from "@/lib/api";
import { accountService } from "@/features/account/services/account.service";
import {
addressFormSchema,
addressFormToRequest,
type AddressFormData,
} from "@customer-portal/domain/customer";
import { useZodForm } from "@/hooks/useZodForm";
export function useAddressEdit(initial: AddressFormData) {
const queryClient = useQueryClient();
const handleSave = useCallback(
async (formData: AddressFormData) => {
const requestData = addressFormToRequest(formData);
await accountService.updateAddress(requestData);
// Address changes can affect server-personalized catalog results (eligibility).
await queryClient.invalidateQueries({ queryKey: queryKeys.services.all() });
},
[queryClient]
);
return useZodForm({
schema: addressFormSchema,
initialValues: initial,
onSubmit: handleSave,
});
}