| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "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<void>;
- } => {
- 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,
- };
- };
|