From d5cd1075902ab3de8413924613d9f1c215649050 Mon Sep 17 00:00:00 2001 From: patzick Date: Wed, 15 Apr 2020 11:55:00 +0200 Subject: [PATCH 1/4] chore: shipping address summary --- api/composables.api.md | 3 ++ .../interfaces/response/SessionContext.ts | 2 ++ packages/composables/src/logic/useCheckout.ts | 16 +++++++++- .../summary/ShippingAddressSummary.vue | 29 ++++++++++++------- packages/nuxt-module/plugins/api-client.js | 9 +++++- 5 files changed, 46 insertions(+), 13 deletions(-) diff --git a/api/composables.api.md b/api/composables.api.md index 5089b7fea..12cf81342 100644 --- a/api/composables.api.md +++ b/api/composables.api.md @@ -20,6 +20,7 @@ import { Product } from '@shopware-pwa/commons/interfaces/models/content/product import { Ref } from '@vue/composition-api'; import { Salutation } from '@shopware-pwa/commons/interfaces/models/system/salutation/Salutation'; import { SessionContext } from '@shopware-pwa/commons/interfaces/response/SessionContext'; +import { ShippingAddress } from '@shopware-pwa/commons/interfaces/request/GuestOrderParams'; import { ShippingMethod } from '@shopware-pwa/commons/interfaces/models/checkout/shipping/ShippingMethod'; // @alpha (undocumented) @@ -103,6 +104,8 @@ export interface UseCheckout { // (undocumented) isGuestOrder: Readonly>; // (undocumented) + shippingAddress: Readonly>; + // (undocumented) updateGuestOrderParams: (params: Partial) => void; } diff --git a/packages/commons/interfaces/response/SessionContext.ts b/packages/commons/interfaces/response/SessionContext.ts index 5d3e8cf63..48631c8f1 100644 --- a/packages/commons/interfaces/response/SessionContext.ts +++ b/packages/commons/interfaces/response/SessionContext.ts @@ -2,6 +2,7 @@ import { PaymentMethod } from "../models/checkout/payment/PaymentMethod"; import { ShippingMethod } from "../models/checkout/shipping/ShippingMethod"; import { Country } from "../models/system/country/Country"; import { User } from "../models/system/user/User"; +import { ShippingAddress } from "../request/GuestOrderParams"; export interface ContextTokenResponse { contextToken: string; @@ -33,6 +34,7 @@ export interface SessionContext { paymentMethod: PaymentMethod; shippingMethod: ShippingMethod; shippingLocation: { + address: ShippingAddress; country: Country; }; } diff --git a/packages/composables/src/logic/useCheckout.ts b/packages/composables/src/logic/useCheckout.ts index 2e4996a15..228ad3721 100644 --- a/packages/composables/src/logic/useCheckout.ts +++ b/packages/composables/src/logic/useCheckout.ts @@ -3,7 +3,10 @@ import { Ref, computed, reactive } from "@vue/composition-api"; import { useUser, useCart } from "@shopware-pwa/composables"; import { ShippingMethod } from "@shopware-pwa/commons/interfaces/models/checkout/shipping/ShippingMethod"; import { PaymentMethod } from "@shopware-pwa/commons/interfaces/models/checkout/payment/PaymentMethod"; -import { GuestOrderParams } from "@shopware-pwa/commons/interfaces/request/GuestOrderParams"; +import { + GuestOrderParams, + ShippingAddress, +} from "@shopware-pwa/commons/interfaces/request/GuestOrderParams"; import { Order } from "@shopware-pwa/commons/interfaces/models/checkout/order/Order"; import { getAvailableShippingMethods, @@ -11,6 +14,7 @@ import { createGuestOrder, createOrder as createApiOrder, } from "@shopware-pwa/shopware-6-client"; +import { useSessionContext } from "./useSessionContext"; /** * @alpha @@ -26,6 +30,7 @@ export interface UseCheckout { }) => Promise>>; createOrder: () => Promise; updateGuestOrderParams: (params: Partial) => void; + shippingAddress: Readonly>; } const orderData: { @@ -44,6 +49,8 @@ const orderData: { export const useCheckout = (): UseCheckout => { const { isLoggedIn } = useUser(); const { refreshCart } = useCart(); + const { sessionContext } = useSessionContext(); + const shippingMethods: Readonly> = computed( () => orderData.shippingMethods ); @@ -96,6 +103,12 @@ export const useCheckout = (): UseCheckout => { orderData.guestOrderParams = { ...orderData.guestOrderParams, ...params }; }; + const shippingAddress = computed(() => + isGuestOrder.value + ? guestOrderParams.value?.shippingAddress + : sessionContext.value?.shippingLocation?.address + ); + return { isGuestOrder, getPaymentMethods, @@ -103,5 +116,6 @@ export const useCheckout = (): UseCheckout => { createOrder, guestOrderParams, updateGuestOrderParams, + shippingAddress, }; }; diff --git a/packages/default-theme/components/checkout/summary/ShippingAddressSummary.vue b/packages/default-theme/components/checkout/summary/ShippingAddressSummary.vue index 3d55c0478..0404de9e1 100644 --- a/packages/default-theme/components/checkout/summary/ShippingAddressSummary.vue +++ b/packages/default-theme/components/checkout/summary/ShippingAddressSummary.vue @@ -1,14 +1,20 @@