diff --git a/packages/api-client/src/index.server.ts b/packages/api-client/src/index.server.ts index 6d215a989..6f0e3da7a 100644 --- a/packages/api-client/src/index.server.ts +++ b/packages/api-client/src/index.server.ts @@ -32,6 +32,11 @@ const onCreate = (settings: Config): { config: Config; client: ClientInstance } const client = apolloClientFactory({ link: apolloLink, ...settings.customOptions, + defaultOptions: { + query: { + errorPolicy: 'all', + }, + }, }); return { diff --git a/packages/composables/src/composables/useCart/index.ts b/packages/composables/src/composables/useCart/index.ts index 4417029b8..6383819e0 100644 --- a/packages/composables/src/composables/useCart/index.ts +++ b/packages/composables/src/composables/useCart/index.ts @@ -56,6 +56,7 @@ const factoryParams: UseCartFactoryParams = { throw errors[0]; } + data.cart.items = data.cart.items.filter(Boolean); return data.cart as unknown as Cart; }; @@ -83,6 +84,7 @@ const factoryParams: UseCartFactoryParams = { } apiState.setCartId(data.customerCart.id); + data.customerCart.items = data.customerCart.items.filter(Boolean); return data.customerCart as unknown as Cart; } catch { @@ -381,7 +383,7 @@ const factoryParams: UseCartFactoryParams = { currentCart, product, }, - ) => !!currentCart?.items.find((cartItem) => cartItem.product.uid === product.uid), + ) => !!currentCart?.items.find((cartItem) => cartItem?.product?.uid === product.uid), }; export default useCartFactory(factoryParams); diff --git a/packages/composables/src/getters/cartGetters.ts b/packages/composables/src/getters/cartGetters.ts index 91af9f6aa..62bd7a97c 100644 --- a/packages/composables/src/getters/cartGetters.ts +++ b/packages/composables/src/getters/cartGetters.ts @@ -89,13 +89,7 @@ export const getItemAttributes = ( return attributes; }; -export const getItemSku = (product: CartItem): string => { - if (!product.product) { - return ''; - } - - return product.product.sku; -}; +export const getItemSku = (product: CartItem): string => product?.product?.sku || ''; const calculateDiscounts = (discounts: Discount[]): number => discounts.reduce((a, b) => Number.parseFloat(`${a}`) + Number.parseFloat(`${b.amount.value}`), 0); @@ -173,14 +167,13 @@ export const getAvailablePaymentMethods = (cart: Cart): AgnosticPaymentMethod[] value: p.code, })); +export const getStockStatus = (product: CartItem): string => product.product.stock_status; export interface CartGetters extends CartGettersBase { getAppliedCoupon(cart: Cart): AgnosticCoupon | null; - getAvailablePaymentMethods(cart: Cart): AgnosticPaymentMethod[]; - getSelectedShippingMethod(cart: Cart): SelectedShippingMethod | null; - productHasSpecialPrice(product: CartItem): boolean; + getStockStatus(product: CartItem): string; } const cartGetters: CartGetters = { @@ -202,6 +195,7 @@ const cartGetters: CartGetters = { getTotalItems, getTotals, productHasSpecialPrice, + getStockStatus, }; export default cartGetters; diff --git a/packages/theme/components/CartSidebar.vue b/packages/theme/components/CartSidebar.vue index 440139830..8f855e858 100644 --- a/packages/theme/components/CartSidebar.vue +++ b/packages/theme/components/CartSidebar.vue @@ -105,8 +105,6 @@ $n(cartGetters.getItemPrice(product).special, 'currency') : '' " - :stock="99999" - :qty="cartGetters.getItemQty(product)" :link=" localePath( `/p/${cartGetters.getItemSku(product)}${cartGetters.getSlug( @@ -119,7 +117,10 @@ @click:remove="sendToRemove({ product })" >