diff --git a/packages/theme/helpers/checkout.ts b/packages/theme/helpers/checkout.ts index f272243a..76a8f903 100644 --- a/packages/theme/helpers/checkout.ts +++ b/packages/theme/helpers/checkout.ts @@ -9,3 +9,10 @@ export const canEnterShipping = (cart: Order): boolean => Boolean(cart?.customer export const canEnterBilling = (cart: Order): boolean => Boolean(cart?.shippingAddress?.streetLine1 && cart?.shippingAddress?.country); export const canEnterPayment = (cart: Order): boolean => canEnterShipping(cart) && canEnterBilling(cart) && cart?.shipping && cart?.state === ARRANGING_PAYMENT; + +export enum CheckoutSteps { + Shipping = 'shipping', + Billing = 'billing', + Payment = 'payment', + ThankYou = 'thank-you' +} diff --git a/packages/theme/middleware/checkout.js b/packages/theme/middleware/checkout.js index 2f5bbea7..48df4b91 100644 --- a/packages/theme/middleware/checkout.js +++ b/packages/theme/middleware/checkout.js @@ -1,4 +1,4 @@ -import { canEnterShipping, canEnterBilling, canEnterPayment, canEnterThankYou } from '../helpers'; +import { canEnterShipping, canEnterBilling, canEnterPayment, canEnterThankYou, CheckoutSteps } from '../helpers'; export default async ({ app, $vsf }) => { const currentPath = app.context.route.fullPath.split('/checkout/')[1]; @@ -10,26 +10,17 @@ export default async ({ app, $vsf }) => { if (!cart?.data || !activeCart) return; - switch (currentPath) { - case 'shipping': - if (!canEnterShipping(activeCart)) { - app.context.redirect('/'); - } - break; - case 'billing': - if (!canEnterBilling(activeCart)) { - app.context.redirect('/'); - } - break; - case 'payment': - if (!canEnterPayment(activeCart)) { - app.context.redirect('/'); - } - break; - case 'thank-you': - if (!canEnterThankYou(app.context)) { - app.context.redirect('/'); - } - break; + if (currentPath === CheckoutSteps.Shipping && !canEnterShipping(activeCart)) { + app.context.redirect('/'); + + } else if (currentPath === CheckoutSteps.Billing && !canEnterBilling(activeCart)) { + app.context.redirect('/'); + + } else if (currentPath === CheckoutSteps.Payment && !canEnterPayment(activeCart)) { + app.context.redirect('/'); + + } else if (currentPath === CheckoutSteps.ThankYou && !canEnterThankYou(app.context)) { + app.context.redirect('/'); + } };