From 7c61e239916e7f95f8a873c3b71498b943f626f6 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 28 May 2025 10:26:28 +0200 Subject: [PATCH 1/2] fix: onboarding redirection --- .../onboarding/create-project/+page.svelte | 2 +- .../onboarding/create-project/+page.ts | 95 ++++++++++--------- .../sites/create-site/templates/store.ts | 12 +++ src/routes/(console)/regions.ts | 2 +- 4 files changed, 62 insertions(+), 49 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts diff --git a/src/routes/(console)/onboarding/create-project/+page.svelte b/src/routes/(console)/onboarding/create-project/+page.svelte index 60a95351f3..d268f45f82 100644 --- a/src/routes/(console)/onboarding/create-project/+page.svelte +++ b/src/routes/(console)/onboarding/create-project/+page.svelte @@ -53,7 +53,7 @@ } // safe side! - loadAvailableRegions(data.organization.$id); + loadAvailableRegions(data.organization?.$id); diff --git a/src/routes/(console)/onboarding/create-project/+page.ts b/src/routes/(console)/onboarding/create-project/+page.ts index 468b97a5ce..a594518ca6 100644 --- a/src/routes/(console)/onboarding/create-project/+page.ts +++ b/src/routes/(console)/onboarding/create-project/+page.ts @@ -3,7 +3,7 @@ import { isCloud } from '$lib/system'; import { sdk } from '$lib/stores/sdk'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { isOrganization, tierToPlan } from '$lib/stores/billing'; -import { ID, Query } from '@appwrite.io/console'; +import { ID, Query, type Models } from '@appwrite.io/console'; import { BillingPlan } from '$lib/constants'; import { redirect } from '@sveltejs/kit'; import { base } from '$app/paths'; @@ -12,61 +12,62 @@ import { base } from '$app/paths'; export const load: PageLoad = async ({ parent }) => { const { organizations } = await parent(); - try { - if (!organizations?.total) { - try { - if (isCloud) { - const org = await sdk.forConsole.billing.createOrganization( - ID.unique(), - 'Personal projects', - BillingPlan.FREE, - null, - null - ); - trackEvent(Submit.OrganizationCreate, { - plan: tierToPlan(BillingPlan.FREE)?.name, - budget_cap_enabled: false, - members_invited: 0 - }); + if (!organizations?.total) { + try { + if (isCloud) { + const org = await sdk.forConsole.billing.createOrganization( + ID.unique(), + 'Personal projects', + BillingPlan.FREE, + null, + null + ); + trackEvent(Submit.OrganizationCreate, { + plan: tierToPlan(BillingPlan.FREE)?.name, + budget_cap_enabled: false, + members_invited: 0 + }); - if (isOrganization(org)) { - return { - organization: org - }; - } else { - const e = new Error(org.message, { - cause: org - }); - trackError(e, Submit.OrganizationCreate); - } - } else { + if (isOrganization(org)) { return { - organization: await sdk.forConsole.teams.create( - ID.unique(), - 'Personal projects' - ) + organization: org }; + } else { + const e = new Error(org.message, { + cause: org + }); + trackError(e, Submit.OrganizationCreate); } - } catch (e) { - trackError(e, Submit.OrganizationCreate); + } else { + return { + organization: await sdk.forConsole.teams.create( + ID.unique(), + 'Personal projects' + ) + }; } - } else if (organizations?.total === 1) { - const org = organizations.teams[0]; - const projects = await sdk.forConsole.projects.list([ + } catch (e) { + trackError(e, Submit.OrganizationCreate); + } + } else if (organizations?.total === 1) { + const org = organizations.teams[0]; + let projects: Models.ProjectList = null; + try { + projects = await sdk.forConsole.projects.list([ Query.equal('teamId', org.$id), Query.limit(1) ]); - if (!projects.total) { - return { - organization: org - }; - } else { - redirect(303, `${base}/console/organization-${org.$id}`); - } + } catch (e) { + redirect(303, `${base}/organization-${org.$id}`); + } + if (!projects?.total) { + return { + organization: org + }; } else { - redirect(303, `${base}/console/organization-${organizations.teams[0].$id}`); + redirect(303, `${base}/organization-${org.$id}`); } - } catch (error) { - console.error(error); + } else { + redirect(303, `${base}/organization-${organizations.teams[0].$id}`); } }; diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts b/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts new file mode 100644 index 0000000000..a053a9c355 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts @@ -0,0 +1,12 @@ +export const estimatedTimeList = [ + { template: 'magic-portfolio', time: '' }, + { template: 'astro-sphere', time: 93 }, + { template: 'template-for-store', time: 86 }, + { template: 'template-for-blog', time: 56 }, + { template: 'template-for-documentation', time: '' }, + { template: 'vitepress', time: 22 }, + { template: 'nxt-lnk', time: 99 }, + { template: 'astro-starlight', time: 33 }, + { template: 'starter-for-nextjs', time: 81 }, + { template: 'template-for-event', time: 33 } +]; diff --git a/src/routes/(console)/regions.ts b/src/routes/(console)/regions.ts index b9e8633672..9f84dd4308 100644 --- a/src/routes/(console)/regions.ts +++ b/src/routes/(console)/regions.ts @@ -11,7 +11,7 @@ let lastLoadedOrganization = null; * Prevents unnecessary API calls if the regions are already loaded for the same organization. */ export async function loadAvailableRegions(orgId: string): Promise { - if (!isCloud) return; + if (!isCloud || !orgId) return; try { const storedRegions = get(regions); From 641eb82262fb64fc619ca25f1047fb379f357a46 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 28 May 2025 11:01:37 +0200 Subject: [PATCH 2/2] remove extra store --- .../sites/create-site/templates/store.ts | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts b/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts deleted file mode 100644 index a053a9c355..0000000000 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/store.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const estimatedTimeList = [ - { template: 'magic-portfolio', time: '' }, - { template: 'astro-sphere', time: 93 }, - { template: 'template-for-store', time: 86 }, - { template: 'template-for-blog', time: 56 }, - { template: 'template-for-documentation', time: '' }, - { template: 'vitepress', time: 22 }, - { template: 'nxt-lnk', time: 99 }, - { template: 'astro-starlight', time: 33 }, - { template: 'starter-for-nextjs', time: 81 }, - { template: 'template-for-event', time: 33 } -];