2025-09-17 18:43:43 +09:00
|
|
|
"use client";
|
|
|
|
|
|
2025-09-19 16:34:10 +09:00
|
|
|
import { useCallback } from "react";
|
2025-09-17 18:43:43 +09:00
|
|
|
import { accountService } from "@/features/account/services/account.service";
|
2025-09-19 16:34:10 +09:00
|
|
|
import {
|
|
|
|
|
addressFormSchema,
|
|
|
|
|
addressFormToRequest,
|
|
|
|
|
type AddressFormData
|
|
|
|
|
} from "@customer-portal/domain";
|
2025-09-25 15:11:28 +09:00
|
|
|
import { useZodForm } from "@customer-portal/validation";
|
2025-09-17 18:43:43 +09:00
|
|
|
|
|
|
|
|
export function useAddressEdit(initial: AddressFormData) {
|
2025-09-19 16:34:10 +09:00
|
|
|
const handleSave = useCallback(async (formData: AddressFormData) => {
|
2025-09-17 18:43:43 +09:00
|
|
|
try {
|
2025-09-19 16:34:10 +09:00
|
|
|
const requestData = addressFormToRequest(formData);
|
|
|
|
|
await accountService.updateAddress(requestData);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
throw error; // Let useZodForm handle the error state
|
2025-09-17 18:43:43 +09:00
|
|
|
}
|
2025-09-19 16:34:10 +09:00
|
|
|
}, []);
|
2025-09-17 18:43:43 +09:00
|
|
|
|
2025-09-19 16:34:10 +09:00
|
|
|
return useZodForm({
|
|
|
|
|
schema: addressFormSchema,
|
|
|
|
|
initialValues: initial,
|
|
|
|
|
onSubmit: handleSave,
|
|
|
|
|
});
|
2025-09-17 18:43:43 +09:00
|
|
|
}
|