Appearance
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 ​
Name | Type | Description |
---|---|---|
customerAddresses | ComputedRef<Array<>> | List of customer addresses |
Methods ​
Name | Type | Description |
---|---|---|
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.