"use client" import { CheckoutAddressNode, MappedCheckoutAddress } from "@/types/checkout/type"; import { useAddress } from "./useAddress"; import { useEffect } from "react"; import { AddressDataTypes } from "@/types/types"; export const useAddressesFromApi = (): { billingAddress: MappedCheckoutAddress | null; shippingAddress: MappedCheckoutAddress | null; getAddresses: () => Promise; } => { const { addresses: data, getAddresses } = useAddress(); const address = data; useEffect(() => { if (!address.length) { getAddresses(); } }, [address.length, getAddresses]); if (!Array.isArray(address)) return { billingAddress: null, shippingAddress: null, getAddresses }; const billingNode = address.find((a: CheckoutAddressNode) => a?.addressType === "cart_billing"); const shippingNode = address.find((a: CheckoutAddressNode) => a?.addressType === "cart_shipping"); const mapNode = ( node?: CheckoutAddressNode | AddressDataTypes ): MappedCheckoutAddress | null => node ? { firstName: node.firstName, lastName: node.lastName, companyName: node.companyName, address: node.address, city: node.city, state: node.state, country: node.country, postcode: node.postcode, email: node.email, phone: node.phone, } : null; return { billingAddress: mapNode(billingNode), shippingAddress: mapNode(shippingNode), getAddresses, }; };