diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts index b2f00db39..c213a7147 100644 --- a/src/lib/stores/billing.ts +++ b/src/lib/stores/billing.ts @@ -279,6 +279,7 @@ export const paymentMissingMandate = writable(null); export async function checkForMandate(org: Organization) { const paymentId = org.paymentMethodId ?? org.backupPaymentMethodId; + if (!paymentId) return; const paymentMethod = await sdk.forConsole.billing.getPaymentMethod(paymentId); if (paymentMethod.mandateId === null && paymentMethod.country === 'in') { headerAlert.add({ diff --git a/src/lib/stores/stripe.ts b/src/lib/stores/stripe.ts index 959b46ffc..93b4576ae 100644 --- a/src/lib/stores/stripe.ts +++ b/src/lib/stores/stripe.ts @@ -51,7 +51,7 @@ export async function unmountPaymentElement() { elements = null; } -export async function submitStripeCard(name: string, urlRoute?: string) { +export async function submitStripeCard(name: string, organizationId?: string) { try { // If a payment method was created during initialization, use it, otherwise create a new one if (!paymentMethod) { @@ -62,16 +62,20 @@ export async function submitStripeCard(name: string, urlRoute?: string) { // // Element needs to be submitted before confirming the setup intent elements.submit(); - const baseUrl = 'https://cloud.appwrite.io/console/'; + const baseUrl = 'https://cloud.appwrite.io/console'; + const accountUrl = `${baseUrl}/account/payments?clientSecret=${clientSecret}`; + const orgUrl = `${baseUrl}/organization-${organizationId}/billing?clientSecret=${clientSecret}`; + + const returnUrl = new URL(organizationId ? orgUrl : accountUrl); + + returnUrl.searchParams.append('clientSecret', clientSecret); + returnUrl.searchParams.append('paymentMethodId', paymentMethod.$id); const { setupIntent, error } = await get(stripe).confirmSetup({ elements, clientSecret, confirmParams: { - return_url: `${baseUrl}${ - urlRoute ?? - `organization-${get(organization).$id}/billing?clientSecret=${clientSecret}` - }`, + return_url: returnUrl.toString(), payment_method_data: { billing_details: { name diff --git a/src/lib/wizards/functions/components/repositories.svelte b/src/lib/wizards/functions/components/repositories.svelte index f4f76872d..dc8c73bd4 100644 --- a/src/lib/wizards/functions/components/repositories.svelte +++ b/src/lib/wizards/functions/components/repositories.svelte @@ -73,7 +73,7 @@ {#if hasInstallations} {#await loadInstallations()}
-
+
    -
+ diff --git a/src/routes/console/+error.svelte b/src/routes/console/+error.svelte index 33d7695d1..408a5afaa 100644 --- a/src/routes/console/+error.svelte +++ b/src/routes/console/+error.svelte @@ -6,7 +6,9 @@ - {$page.error.status || 'Invalid Argument'} - {$page.error.message} - +
+ {$page.error.status || 'Invalid Argument'} + {$page.error.message} + +
diff --git a/src/routes/console/+layout.svelte b/src/routes/console/+layout.svelte index 3cb22443e..6e3c6ba6d 100644 --- a/src/routes/console/+layout.svelte +++ b/src/routes/console/+layout.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/console/account/payments/paymentModal.svelte b/src/routes/console/account/payments/paymentModal.svelte index abe6767fe..2ac93e0b2 100644 --- a/src/routes/console/account/payments/paymentModal.svelte +++ b/src/routes/console/account/payments/paymentModal.svelte @@ -6,6 +6,7 @@ import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import { addNotification } from '$lib/stores/notifications'; + import { page } from '$app/stores'; export let show = false; @@ -20,7 +21,7 @@ async function handleSubmit() { try { - const card = await submitStripeCard(name); + const card = await submitStripeCard(name, $page?.params?.organization ?? null); invalidate(Dependencies.PAYMENT_METHODS); dispatch('submit', card); show = false; diff --git a/src/routes/console/organization-[organization]/billing/replaceCard.svelte b/src/routes/console/organization-[organization]/billing/replaceCard.svelte index e25348990..639964119 100644 --- a/src/routes/console/organization-[organization]/billing/replaceCard.svelte +++ b/src/routes/console/organization-[organization]/billing/replaceCard.svelte @@ -33,7 +33,7 @@ async function handleSubmit() { try { if (!selectedPaymentMethodId) { - const method = await submitStripeCard(name); + const method = await submitStripeCard(name, $organization.$id); selectedPaymentMethodId = method.$id; } isBackup diff --git a/src/routes/console/organization-[organization]/billing/retryPaymentModal.svelte b/src/routes/console/organization-[organization]/billing/retryPaymentModal.svelte index 828782773..e0f034029 100644 --- a/src/routes/console/organization-[organization]/billing/retryPaymentModal.svelte +++ b/src/routes/console/organization-[organization]/billing/retryPaymentModal.svelte @@ -39,7 +39,7 @@ try { if (paymentMethodId === null) { try { - const method = await submitStripeCard(name); + const method = await submitStripeCard(name, $organization.$id); const card = await sdk.forConsole.billing.getPaymentMethod(method.$id); if (card?.last4) { paymentMethodId = card.$id; diff --git a/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte b/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte index 72dfd81c2..8a142ac57 100644 --- a/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte +++ b/src/routes/console/organization-[organization]/billing/wizard/paymentDetails.svelte @@ -9,6 +9,7 @@ import { sdk } from '$lib/stores/sdk'; import { PaymentBoxes } from '$lib/components/billing'; import { addCreditWizardStore } from '../store'; + import { organization } from '$lib/stores/organization'; let methods: PaymentList; let name: string; @@ -21,7 +22,7 @@ async function handleSubmit() { try { - const method = await submitStripeCard(name); + const method = await submitStripeCard(name, $organization.$id); $addCreditWizardStore.paymentMethodId = method.$id; invalidate(Dependencies.PAYMENT_METHODS); } catch (e) { diff --git a/src/routes/console/project-[project]/overview/platforms/createAndroid.svelte b/src/routes/console/project-[project]/overview/platforms/createAndroid.svelte index 05fcfe438..f2d1e3267 100644 --- a/src/routes/console/project-[project]/overview/platforms/createAndroid.svelte +++ b/src/routes/console/project-[project]/overview/platforms/createAndroid.svelte @@ -4,7 +4,6 @@ import { wizard } from '$lib/stores/wizard'; import { createPlatform } from './wizard/store'; import { Dependencies } from '$lib/constants'; - import { onboarding } from '../../store'; import type { WizardStepsType } from '$lib/layout/wizard.svelte'; import Step1 from './wizard/android/step1.svelte'; import Step2 from './wizard/android/step2.svelte'; @@ -12,10 +11,7 @@ import Step4 from './wizard/step4.svelte'; async function onFinish() { - await Promise.all([ - $onboarding && invalidate(Dependencies.PROJECT), - invalidate(Dependencies.PLATFORMS) - ]); + await Promise.all([invalidate(Dependencies.PROJECT), invalidate(Dependencies.PLATFORMS)]); createPlatform.reset(); wizard.hide(); } diff --git a/src/routes/console/project-[project]/overview/platforms/createApple.svelte b/src/routes/console/project-[project]/overview/platforms/createApple.svelte index 745a9b537..33baa5870 100644 --- a/src/routes/console/project-[project]/overview/platforms/createApple.svelte +++ b/src/routes/console/project-[project]/overview/platforms/createApple.svelte @@ -9,13 +9,10 @@ import Step3 from './wizard/apple/step3.svelte'; import Step4 from './wizard/step4.svelte'; import { Dependencies } from '$lib/constants'; - import { onboarding } from '../../store'; async function onFinish() { - await Promise.all([ - $onboarding && invalidate(Dependencies.PROJECT), - invalidate(Dependencies.PLATFORMS) - ]); + await Promise.all([invalidate(Dependencies.PROJECT), invalidate(Dependencies.PLATFORMS)]); + createPlatform.reset(); wizard.hide(); } diff --git a/src/routes/console/project-[project]/overview/platforms/createFlutter.svelte b/src/routes/console/project-[project]/overview/platforms/createFlutter.svelte index 5be9b2568..f4cd90823 100644 --- a/src/routes/console/project-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/console/project-[project]/overview/platforms/createFlutter.svelte @@ -9,13 +9,10 @@ import Step3 from './wizard/flutter/step3.svelte'; import Step4 from './wizard/step4.svelte'; import { Dependencies } from '$lib/constants'; - import { onboarding } from '../../store'; async function onFinish() { - await Promise.all([ - $onboarding && invalidate(Dependencies.PROJECT), - invalidate(Dependencies.PLATFORMS) - ]); + await Promise.all([invalidate(Dependencies.PROJECT), invalidate(Dependencies.PLATFORMS)]); + createPlatform.reset(); wizard.hide(); } diff --git a/src/routes/console/project-[project]/overview/platforms/createWeb.svelte b/src/routes/console/project-[project]/overview/platforms/createWeb.svelte index c24248ca3..1fe89255e 100644 --- a/src/routes/console/project-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/console/project-[project]/overview/platforms/createWeb.svelte @@ -9,13 +9,10 @@ import Step3 from './wizard/web/step3.svelte'; import Step4 from './wizard/step4.svelte'; import { Dependencies } from '$lib/constants'; - import { onboarding } from '../../store'; async function onFinish() { - await Promise.all([ - $onboarding && invalidate(Dependencies.PROJECT), - invalidate(Dependencies.PLATFORMS) - ]); + await Promise.all([invalidate(Dependencies.PROJECT), invalidate(Dependencies.PLATFORMS)]); + createPlatform.reset(); wizard.hide(); } diff --git a/src/routes/console/wizard/cloudOrganizationChangeTier/paymentDetails.svelte b/src/routes/console/wizard/cloudOrganizationChangeTier/paymentDetails.svelte index b82943719..99116f394 100644 --- a/src/routes/console/wizard/cloudOrganizationChangeTier/paymentDetails.svelte +++ b/src/routes/console/wizard/cloudOrganizationChangeTier/paymentDetails.svelte @@ -10,9 +10,9 @@ import { Dependencies } from '$lib/constants'; import { initializeStripe, isStripeInitialized, submitStripeCard } from '$lib/stores/stripe'; import { organization } from '$lib/stores/organization'; - import { symmetricDifference } from '$lib/helpers/array'; import { showUsageRatesModal } from '$lib/stores/billing'; import { PaymentBoxes } from '$lib/components/billing'; + import { page } from '$app/stores'; let methods: PaymentList; let filteredMethods: PaymentMethodData[]; @@ -48,15 +48,10 @@ } } else { try { - await submitStripeCard(name); - const latestMethods = await sdk.forConsole.billing.listPaymentMethods(); - const paymentMethod = symmetricDifference( - methods.paymentMethods, - latestMethods.paymentMethods - )[0] as PaymentMethodData; - const card = await sdk.forConsole.billing.getPaymentMethod(paymentMethod.$id); + const method = await submitStripeCard(name, $page?.params?.organization ?? null); + const card = await sdk.forConsole.billing.getPaymentMethod(method.$id); if (card?.last4) { - $changeOrganizationTier.paymentMethodId = paymentMethod.$id; + $changeOrganizationTier.paymentMethodId = method.$id; } else { throw new Error( 'The payment method you selected is not valid. Please select a different one.'