Skip to content

useAddress ​

Definition ​

Composable to manage customer addresses

Basic usage ​

ts
const { 
 customerAddresses,
 loadCustomerAddresses,
 createCustomerAddress,
 updateCustomerAddress,
 deleteCustomerAddress,
 setDefaultCustomerBillingAddress,
 setDefaultCustomerShippingAddress,
 errorMessageBuilder 
} = useAddress();

Signature ​

ts
export function useAddress(): UseAddressReturn 

Return type ​

See UseAddressReturn
ts
export type UseAddressReturn = {
  /**
   * List of customer addresses
   */
  customerAddresses: ComputedRef<Schemas["CustomerAddress"][]>;
  /**
   * Loads the addresses that are available under `customerAddresses` property
   */
  loadCustomerAddresses(): Promise<void>;
  /**
   * Allows to create new address for a current customer
   */
  createCustomerAddress(
    customerAddress: Schemas["CustomerAddress"],
  ): Promise<Schemas["CustomerAddress"]>;
  /**
   * Allows to update existing address for a current customer
   */
  updateCustomerAddress(
    customerAddress: Schemas["CustomerAddress"],
  ): Promise<Schemas["CustomerAddress"]>;
  /**
   * Allows to delete existing address for a current customer
   */
  deleteCustomerAddress(addressId: string): Promise<void>;
  /**
   * Sets the address for given ID as default billing address
   */
  setDefaultCustomerBillingAddress(addressId: string): Promise<string>;
  /**
   * Sets the address for given ID as default shipping address
   */
  setDefaultCustomerShippingAddress(addressId: string): Promise<string>;
  /**
   * Returns formatted error message
   *
   * @param {ShopwareError} error
   */
  errorMessageBuilder(error: ApiError): string | null;
};

Properties ​

NameTypeDescription
customerAddresses
ComputedRef<Array<>>
List of customer addresses

Methods ​

NameTypeDescription
loadCustomerAddresses
Promise<void>
Loads the addresses that are available under `customerAddresses` property
createCustomerAddress
Promise<>
Allows to create new address for a current customer
updateCustomerAddress
Promise<>
Allows to update existing address for a current customer
deleteCustomerAddress
Promise<void>
Allows to delete existing address for a current customer
setDefaultCustomerBillingAddress
Promise<string>
Sets the address for given ID as default billing address
setDefaultCustomerShippingAddress
Promise<string>
Sets the address for given ID as default shipping address
errorMessageBuilder
string | 
Returns formatted error message

Usage ​

Load and iterate over the customer addresses: ​

vue
<script setup lang="ts">
const { customerAddresses, loadCustomerAddresses } = useAddress();

loadCustomerAddresses();
</script>
<template>
    <div v-for="address in customerAddresses" :id="address.id">
        {{ address.firstName }} {{ address.lastName }}
        <!-- use other properties available in CustomerAddress type -->
    </div>
</template>

Create a customer address: ​

vue
<script setup lang="ts">
const { createCustomerAddress, updateCustomerAddress } = useAddress();

const newAddress: CustomerAddress = await createCustomerAddress({
  city: "Berlin",
  countryId: "2fbb5fe2e29a4d70aa5854ce7ce3e20b",
  salutationId: "a7c40f6321c547759c4d0c6031e6c609",
  firstName: "John",
  lastName: "Doe",
  street: "Karl-Marx-Allee 1",
  zipcode: "10178",
});

// refresh store with customer addresses (optionally if you want to see updated list of addresses)
updateCustomerAddress();
</script>

Update a customer address ​

ts
const { updateCustomerAddress } = useAddress();
const updatedAddress = await updateCustomerAddress(
    Object.assign(
        {},
        address, // old address object we want to change
        { firstName: "Johnny" } // change the firstName value
    )
);

// refresh store with customer addresses (optionally if you want to see updated list of addresses)
updateCustomerAddress();

Delete an address ​

vue
<script setup lang="ts">
const { customerAddresses, deleteCustomerAddress } = useAddress();

const address: CustomerAddress = {
    id: "2fbb5fe2e29a4d70aa5854ce7ce3e20b"
    // other properties omitted
}

await deleteCustomerAddress(address.id);

// then
customerAddresses.value?.find((customerAddress) => customerAddress.id === address.id)
// will return undefined
</script>

In case of no error thrown on successfully deleted address, then the list of available addresses will be refreshed automatically and the array of addresses will not contain the previously deleted one.

Set an address as default billing address ​

Pass as an argument an ID of address you want to set as default one

ts
await setDefaultCustomerBillingAddress("2fbb5fe2e29a4d70aa5854ce7ce3e20b");

Set an address as default shipping address ​

Pass as an argument an ID of address you want to set as default one

ts
await setDefaultCustomerShippingAddress("2fbb5fe2e29a4d70aa5854ce7ce3e20b");

The action succeeds if no exception is thrown.

useAddress has loaded