diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index 283a0aafc..62f9652df 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -79,8 +79,27 @@ wizard.setInterceptor(null); if (isLastStep) { - trackEvent('wizard_finish'); - dispatch('finish'); + if ($wizard.finalAction) { + $wizard.nextDisabled = true; + try { + await $wizard.finalAction(); + trackEvent('wizard_finish'); + } catch (error) { + addNotification({ + message: error.message, + type: 'error' + }); + } finally { + $wizard.nextDisabled = false; + } + } else { + $wizard.nextDisabled = true; + trackEvent('wizard_finish'); + dispatch('finish'); + setTimeout(() => { + $wizard.nextDisabled = false; + }, 2000); + } } else { if (steps.get($wizard.step + 1)?.disabled) { $wizard.step++; diff --git a/src/lib/stores/wizard.ts b/src/lib/stores/wizard.ts index c14d4c88a..85677ff0a 100644 --- a/src/lib/stores/wizard.ts +++ b/src/lib/stores/wizard.ts @@ -9,6 +9,7 @@ export type WizardStore = { component?: typeof SvelteComponent; cover?: typeof SvelteComponent; interceptor?: () => Promise; + finalAction?: () => Promise; nextDisabled: boolean; step: number; interceptorNotificationEnabled: boolean; @@ -23,7 +24,8 @@ function createWizardStore() { interceptorNotificationEnabled: true, media: null, nextDisabled: false, - step: 1 + step: 1, + finalAction: null }); return { @@ -34,9 +36,12 @@ function createWizardStore() { n.show = true; n.component = component; n.interceptor = null; + n.interceptorNotificationEnabled = true; n.media = media; n.step = 1; n.cover = null; + n.nextDisabled = false; + n.finalAction = null; trackEvent('wizard_start'); return n; }), @@ -57,9 +62,13 @@ function createWizardStore() { n.show = false; n.component = null; n.interceptor = null; + n.interceptorNotificationEnabled = true; n.media = null; n.step = 1; n.cover = null; + n.nextDisabled = false; + n.finalAction = null; + return n; }), showCover: (component: typeof SvelteComponent) => diff --git a/src/routes/console/changeOrganizationTierCloud.svelte b/src/routes/console/changeOrganizationTierCloud.svelte index d4f9df868..92d2b3460 100644 --- a/src/routes/console/changeOrganizationTierCloud.svelte +++ b/src/routes/console/changeOrganizationTierCloud.svelte @@ -33,7 +33,6 @@ } async function changeTier() { - $wizard.nextDisabled = true; //Downgrade if ($changeOrganizationTier.billingPlan === 'tier-0') { try { @@ -72,8 +71,6 @@ e, $isUpgrade ? Submit.OrganizationUpgrade : Submit.OrganizationDowngrade ); - } finally { - $wizard.nextDisabled = false; } } else { try { @@ -178,8 +175,6 @@ e, $isUpgrade ? Submit.OrganizationUpgrade : Submit.OrganizationDowngrade ); - } finally { - $wizard.nextDisabled = false; } } } @@ -230,11 +225,12 @@ label: 'Review', component: ConfirmDetails }); + + $wizard.finalAction = changeTier; diff --git a/src/routes/console/createOrganizationCloud.svelte b/src/routes/console/createOrganizationCloud.svelte index a58d25981..809c0960b 100644 --- a/src/routes/console/createOrganizationCloud.svelte +++ b/src/routes/console/createOrganizationCloud.svelte @@ -26,7 +26,6 @@ } async function create() { - $wizard.nextDisabled = true; try { const org = await sdk.forConsole.billing.createOrganization( $createOrganization.id ?? ID.unique(), @@ -105,8 +104,6 @@ message: e.mesage }); trackError(e, Submit.OrganizationCreate); - } finally { - $wizard.nextDisabled = false; } } onDestroy(() => { @@ -150,11 +147,12 @@ label: 'Review', component: ConfirmDetails }); + + $wizard.finalAction = create; diff --git a/src/routes/console/supportWizard.svelte b/src/routes/console/supportWizard.svelte index d5c4d691a..ff06e98b9 100644 --- a/src/routes/console/supportWizard.svelte +++ b/src/routes/console/supportWizard.svelte @@ -72,14 +72,11 @@ project: null }; } + + $wizard.finalAction = handleSubmit; - +

Contact the Appwrite Team

diff --git a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte index ca9e9bc70..7077df525 100644 --- a/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte +++ b/src/routes/console/wizard/cloudOrganization/organizationDetails.svelte @@ -40,6 +40,7 @@