From e2c2912375d24a866f1eb805d325d29792aa8ffe Mon Sep 17 00:00:00 2001 From: lukicenturi Date: Fri, 19 Jul 2024 18:30:59 +0700 Subject: [PATCH] feat: continue payment flow after registration --- .../account/activation/AccountActivate.vue | 37 ++- components/account/login/LoginForm.vue | 26 +- components/account/login/LoginModal.vue | 17 -- components/account/signup/SignupAccount.vue | 188 +++++++------ components/account/signup/SignupAddress.vue | 262 +++++++++--------- .../signup/SignupCustomerInformation.vue | 156 ++++++----- components/account/signup/SignupForm.vue | 9 + .../payment-method/PaymentMethodSelection.vue | 51 ++-- components/integration/IntegrationDetails.vue | 9 +- composables/redirect-url.ts | 40 +++ locales/en.json | 3 +- package.json | 2 +- pages/checkout/pay.vue | 6 + pnpm-lock.yaml | 10 +- 14 files changed, 450 insertions(+), 366 deletions(-) delete mode 100644 components/account/login/LoginModal.vue create mode 100644 composables/redirect-url.ts diff --git a/components/account/activation/AccountActivate.vue b/components/account/activation/AccountActivate.vue index e66b3a54..43561f3f 100644 --- a/components/account/activation/AccountActivate.vue +++ b/components/account/activation/AccountActivate.vue @@ -10,7 +10,9 @@ const { uid, token } = route.params; const validating = ref(true); const isValid = ref(false); -const { getAccount } = useMainStore(); +const mainStore = useMainStore(); +const { getAccount } = mainStore; +const { account } = storeToRefs(mainStore); const logger = useLogger(); async function validateToken() { @@ -33,6 +35,22 @@ onBeforeMount(async () => { await getAccount(); }); const { t } = useI18n(); + +const { getLastRedirectUrl } = useRedirectUrl(); + +const lastPaymentLink = computed(() => { + const accountVal = get(account); + if (accountVal && accountVal.username) + return getLastRedirectUrl(accountVal.username); + + return undefined; +}); + +function redirectToPaymentLink() { + const paymentLink = get(lastPaymentLink); + if (paymentLink) + window.location.href = paymentLink; +} diff --git a/components/integration/IntegrationDetails.vue b/components/integration/IntegrationDetails.vue index 0317b4f6..cff97950 100644 --- a/components/integration/IntegrationDetails.vue +++ b/components/integration/IntegrationDetails.vue @@ -110,10 +110,11 @@ const { isMdAndUp } = useBreakpoint(); leave-to-class="opacity-0" class="flex-1 flex flex-col gap-10" > - +
+ +