From 090111a75682f56b11b071d753719dd63ad76937 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:19:22 +0530 Subject: [PATCH 01/12] fix: domains flow on sites. --- .../domains/add-domain/+page.svelte | 28 ++++++++++++++++--- .../site-[site]/domains/add-domain/+page.ts | 6 ++-- .../add-domain/verify-[domain]/+page.ts | 14 ++++++---- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 2fd0adecd..ec0af6754 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -23,6 +23,8 @@ import { writable } from 'svelte/store'; import { onMount } from 'svelte'; import { ConnectRepoModal } from '$lib/components/git/index.js'; + import { project } from '$routes/(console)/project-[region]-[project]/store'; + import type { Domain } from '$lib/sdk/domains'; const routeBase = `${base}/project-${page.params.region}-${page.params.project}/sites/site-${page.params.site}/domains`; @@ -50,27 +52,45 @@ }); async function addDomain() { + let domain: Domain; + if (data.domains) { + domain = data.domains.domains.find((d) => d.domain === domainName); + } + + if (!domain) { + try { + domain = await sdk.forConsole.domains.create($project.teamId, domainName); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + + return; + } + } + try { let rule: Models.ProxyRule; if (behaviour === 'BRANCH') { rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createSiteRule(domainName, page.params.site, branch); + .proxy.createSiteRule(domain.domain, page.params.site, branch); } else if (behaviour === 'REDIRECT') { const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode); rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createRedirectRule(domainName, $protocol + redirect, sc); + .proxy.createRedirectRule(domain.domain, $protocol + redirect, statusCode); } else if (behaviour === 'ACTIVE') { rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createSiteRule(domainName, page.params.site); + .proxy.createSiteRule(domain.domain, page.params.site); } if (rule?.status === 'verified') { await goto(routeBase); await invalidate(Dependencies.SITES_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); + await goto(`${routeBase}/add-domain/verify-${domain.domain}`); await invalidate(Dependencies.SITES_DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts index 86f69c2f4..a39c161de 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts @@ -7,19 +7,21 @@ export const load = async ({ parent, depends, params }) => { const { site } = await parent(); depends(Dependencies.DOMAINS, Dependencies.SITES_DOMAINS); - const [rules, installations] = await Promise.all([ + const [rules, installations, domains] = await Promise.all([ sdk .forProject(params.region, params.project) .proxy.listRules([ Query.equal('type', RuleType.DEPLOYMENT), Query.equal('trigger', RuleTrigger.MANUAL) ]), - sdk.forProject(params.region, params.project).vcs.listInstallations() + sdk.forProject(params.region, params.project).vcs.listInstallations(), + sdk.forConsole.domains.list() ]); return { site, rules, + domains, installations, branches: site?.installationId && site?.providerRepositoryId diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts index db8caef3a..9a5223cb8 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts @@ -1,19 +1,21 @@ import { sdk } from '$lib/stores/sdk'; -import { Dependencies } from '$lib/constants.js'; import { isCloud } from '$lib/system'; +import { Dependencies } from '$lib/constants.js'; import type { Domain, DomainsList } from '$lib/sdk/domains.js'; export const load = async ({ parent, depends, params }) => { const { site } = await parent(); - depends(Dependencies.DOMAINS); + depends(Dependencies.SITES_DOMAINS); let domain: Domain; let domainsList: DomainsList; + if (isCloud) { - [domain, domainsList] = await Promise.all([ - sdk.forConsole.domains.get(params.domain), - sdk.forConsole.domains.list() - ]); + domainsList = await sdk.forConsole.domains.list(); + const domainId = domainsList.domains.find( + (domain: Domain) => domain.domain === params.domain + ).$id; + domain = await sdk.forConsole.domains.get(domainId); } return { From 017fad5d64e1e2ff51702a4e3adf9644cbb63cd5 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:24:24 +0530 Subject: [PATCH 02/12] apply suggestion. Co-authored-by: Torsten Dittmann --- .../sites/site-[site]/domains/add-domain/+page.svelte | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index ec0af6754..1c0a09a95 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -52,10 +52,7 @@ }); async function addDomain() { - let domain: Domain; - if (data.domains) { - domain = data.domains.domains.find((d) => d.domain === domainName); - } + let domain = data.domains?.domains.find((d) => d.domain === domainName); if (!domain) { try { From 18513affcc44f9e35942e1b8f52880ce98e547a8 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:26:09 +0530 Subject: [PATCH 03/12] fix: lint. --- .../sites/site-[site]/domains/add-domain/+page.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 1c0a09a95..58499df1c 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -74,7 +74,6 @@ .forProject(page.params.region, page.params.project) .proxy.createSiteRule(domain.domain, page.params.site, branch); } else if (behaviour === 'REDIRECT') { - const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode); rule = await sdk .forProject(page.params.region, page.params.project) .proxy.createRedirectRule(domain.domain, $protocol + redirect, statusCode); From afa49db0dd2d97fc7c5b32c496f620c28d3ba2e9 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:39:41 +0530 Subject: [PATCH 04/12] address comments, lint. --- .../domains/add-domain/+page.svelte | 5 ++--- .../domains/add-domain/+page.svelte | 18 +++++++----------- .../site-[site]/domains/add-domain/+page.ts | 3 ++- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte index e24c06905..a05896ba3 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte @@ -29,8 +29,8 @@ let behaviour: 'REDIRECT' | 'BRANCH' | 'ACTIVE' = $state('ACTIVE'); let domainName = $state(''); let redirect: string = $state(null); - let statusCode = $state(307); let branch: string = $state(null); + let statusCode = $state(StatusCode.TemporaryRedirect307); onMount(() => { if ( @@ -52,10 +52,9 @@ .forProject(page.params.region, page.params.project) .proxy.createFunctionRule(domainName, page.params.function, branch); } else if (behaviour === 'REDIRECT') { - const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode); rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createRedirectRule(domainName, $protocol + redirect, sc); + .proxy.createRedirectRule(domainName, $protocol + redirect, statusCode); } else if (behaviour === 'ACTIVE') { rule = await sdk .forProject(page.params.region, page.params.project) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 58499df1c..67970fef5 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -12,19 +12,13 @@ import { protocol } from '$routes/(console)/store'; import { IconInfo } from '@appwrite.io/pink-icons-svelte'; import { LabelCard } from '$lib/components'; - import { - Adapter, - BuildRuntime, - Framework, - StatusCode, - type Models - } from '@appwrite.io/console'; + import { Adapter, BuildRuntime, Framework, type Models, StatusCode } from '@appwrite.io/console'; import { statusCodeOptions } from '$lib/stores/domains'; import { writable } from 'svelte/store'; import { onMount } from 'svelte'; import { ConnectRepoModal } from '$lib/components/git/index.js'; import { project } from '$routes/(console)/project-[region]-[project]/store'; - import type { Domain } from '$lib/sdk/domains'; + import { isCloud } from '$lib/system'; const routeBase = `${base}/project-${page.params.region}-${page.params.project}/sites/site-${page.params.site}/domains`; @@ -36,8 +30,8 @@ let behaviour: 'REDIRECT' | 'BRANCH' | 'ACTIVE' = $state('ACTIVE'); let domainName = $state(''); let redirect: string = $state(null); - let statusCode = $state(307); let branch: string = $state(null); + let statusCode = $state(StatusCode.TemporaryRedirect307); onMount(() => { if ( @@ -54,7 +48,7 @@ async function addDomain() { let domain = data.domains?.domains.find((d) => d.domain === domainName); - if (!domain) { + if (!domain && isCloud) { try { domain = await sdk.forConsole.domains.create($project.teamId, domainName); } catch (error) { @@ -86,7 +80,9 @@ await goto(routeBase); await invalidate(Dependencies.SITES_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domain.domain}`); + if (isCloud) { + await goto(`${routeBase}/add-domain/verify-${domain.domain}`); + } await invalidate(Dependencies.SITES_DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts index a39c161de..d49b1c737 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.ts @@ -2,6 +2,7 @@ import { Query } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import { RuleTrigger, RuleType } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants.js'; +import { isCloud } from '$lib/system'; export const load = async ({ parent, depends, params }) => { const { site } = await parent(); @@ -15,7 +16,7 @@ export const load = async ({ parent, depends, params }) => { Query.equal('trigger', RuleTrigger.MANUAL) ]), sdk.forProject(params.region, params.project).vcs.listInstallations(), - sdk.forConsole.domains.list() + isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null) ]); return { From 2d832aad9c1e53c8e9d899c4a9711d5bda3a7ae7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:44:49 +0530 Subject: [PATCH 05/12] lint, again --- .../sites/site-[site]/domains/add-domain/+page.svelte | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 67970fef5..17b495ec8 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -12,7 +12,13 @@ import { protocol } from '$routes/(console)/store'; import { IconInfo } from '@appwrite.io/pink-icons-svelte'; import { LabelCard } from '$lib/components'; - import { Adapter, BuildRuntime, Framework, type Models, StatusCode } from '@appwrite.io/console'; + import { + Adapter, + BuildRuntime, + Framework, + type Models, + StatusCode + } from '@appwrite.io/console'; import { statusCodeOptions } from '$lib/stores/domains'; import { writable } from 'svelte/store'; import { onMount } from 'svelte'; From 23c013c3693e35b7cd3d6c069aa931bf7ec83241 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:54:53 +0530 Subject: [PATCH 06/12] update: sites changes. --- .../sites/site-[site]/domains/add-domain/+page.svelte | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 17b495ec8..f96ad5c14 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -86,9 +86,7 @@ await goto(routeBase); await invalidate(Dependencies.SITES_DOMAINS); } else { - if (isCloud) { - await goto(`${routeBase}/add-domain/verify-${domain.domain}`); - } + await goto(`${routeBase}/add-domain/verify-${domain.domain}`); await invalidate(Dependencies.SITES_DOMAINS); } } catch (error) { From 3fe49705df67d49d14f2977ac881d386e85baf9a Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:57:17 +0530 Subject: [PATCH 07/12] fix: functions. --- .../function-[function]/domains/add-domain/+page.svelte | 2 +- .../domains/add-domain/verify-[domain]/+page.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte index a05896ba3..fdf2db3ca 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte @@ -64,7 +64,7 @@ await goto(routeBase); await invalidate(Dependencies.FUNCTION_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); + await goto(`${routeBase}/add-domain/verify-${domainName}`); await invalidate(Dependencies.FUNCTION_DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/verify-[domain]/+page.ts b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/verify-[domain]/+page.ts index 6e84864d1..5fbb56d85 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/verify-[domain]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/verify-[domain]/+page.ts @@ -9,10 +9,11 @@ export const load = async ({ depends, params }) => { let domain: Domain; let domainsList: DomainsList; if (isCloud) { - [domain, domainsList] = await Promise.all([ - sdk.forConsole.domains.get(params.domain), - sdk.forConsole.domains.list() - ]); + domainsList = await sdk.forConsole.domains.list(); + const domainId = domainsList.domains.find( + (domain: Domain) => domain.domain === params.domain + ).$id; + domain = await sdk.forConsole.domains.get(domainId); } return { From 3ce5bb0da7f649a3d6b9d46328c6c78e82d0515f Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 17:57:55 +0530 Subject: [PATCH 08/12] fix: settings. --- .../settings/domains/add-domain/+page.svelte | 2 +- .../settings/domains/add-domain/verify-[domain]/+page.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte index dbaeb6244..f61e0e5fe 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte @@ -33,7 +33,7 @@ await goto(routeBase); await invalidate(Dependencies.DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); + await goto(`${routeBase}/add-domain/verify-${domainName}`); await invalidate(Dependencies.DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts index 6e84864d1..5fbb56d85 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts @@ -9,10 +9,11 @@ export const load = async ({ depends, params }) => { let domain: Domain; let domainsList: DomainsList; if (isCloud) { - [domain, domainsList] = await Promise.all([ - sdk.forConsole.domains.get(params.domain), - sdk.forConsole.domains.list() - ]); + domainsList = await sdk.forConsole.domains.list(); + const domainId = domainsList.domains.find( + (domain: Domain) => domain.domain === params.domain + ).$id; + domain = await sdk.forConsole.domains.get(domainId); } return { From 7190229827f506ccb68e5dfc1637b98b95d44944 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 18:07:09 +0530 Subject: [PATCH 09/12] add: rule id params. --- .../function-[function]/domains/add-domain/+page.svelte | 2 +- .../settings/domains/add-domain/+page.svelte | 2 +- .../sites/site-[site]/domains/add-domain/+page.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte index fdf2db3ca..a05896ba3 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte @@ -64,7 +64,7 @@ await goto(routeBase); await invalidate(Dependencies.FUNCTION_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domainName}`); + await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); await invalidate(Dependencies.FUNCTION_DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte index f61e0e5fe..dbaeb6244 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte @@ -33,7 +33,7 @@ await goto(routeBase); await invalidate(Dependencies.DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domainName}`); + await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); await invalidate(Dependencies.DOMAINS); } } catch (error) { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index f96ad5c14..247cdc4ed 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -86,7 +86,7 @@ await goto(routeBase); await invalidate(Dependencies.SITES_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domain.domain}`); + await goto(`${routeBase}/add-domain/verify-${domain.domain}?rule=${rule.$id}`); await invalidate(Dependencies.SITES_DOMAINS); } } catch (error) { From 766b5eafcd3a3fea3cee86399fd1523191763bc6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 18:11:50 +0530 Subject: [PATCH 10/12] address comment. --- .../sites/site-[site]/domains/add-domain/+page.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 247cdc4ed..582e6fe1d 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -72,21 +72,21 @@ if (behaviour === 'BRANCH') { rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createSiteRule(domain.domain, page.params.site, branch); + .proxy.createSiteRule(domainName, page.params.site, branch); } else if (behaviour === 'REDIRECT') { rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createRedirectRule(domain.domain, $protocol + redirect, statusCode); + .proxy.createRedirectRule(domainName, $protocol + redirect, statusCode); } else if (behaviour === 'ACTIVE') { rule = await sdk .forProject(page.params.region, page.params.project) - .proxy.createSiteRule(domain.domain, page.params.site); + .proxy.createSiteRule(domainName, page.params.site); } if (rule?.status === 'verified') { await goto(routeBase); await invalidate(Dependencies.SITES_DOMAINS); } else { - await goto(`${routeBase}/add-domain/verify-${domain.domain}?rule=${rule.$id}`); + await goto(`${routeBase}/add-domain/verify-${domainName}?rule=${rule.$id}`); await invalidate(Dependencies.SITES_DOMAINS); } } catch (error) { From 8cdbe50f4dbfe0294bac84a137eb4f8507a77ea0 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 18:21:25 +0530 Subject: [PATCH 11/12] add: domain in bg if not exists. --- .../settings/domains/add-domain/+page.svelte | 19 ++++++++++++++++++- .../settings/domains/add-domain/+page.ts | 9 ++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte index dbaeb6244..6267fa40b 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte @@ -9,10 +9,12 @@ import { Dependencies } from '$lib/constants'; import { writable } from 'svelte/store'; import { onMount } from 'svelte'; + import { isCloud } from '$lib/system'; + import { project } from '$routes/(console)/project-[region]-[project]/store'; const routeBase = `${base}/project-${page.params.region}-${page.params.project}/settings/domains`; - // let { data } = $props(); + let { data } = $props(); let formComponent: Form; let isSubmitting = $state(writable(false)); @@ -25,6 +27,21 @@ }); async function addDomain() { + let domain = data.domains?.domains.find((d) => d.domain === domainName); + + if (!domain && isCloud) { + try { + domain = await sdk.forConsole.domains.create($project.teamId, domainName); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + + return; + } + } + try { const rule = await sdk .forProject(page.params.region, page.params.project) diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.ts index d4e21a917..a5408d22d 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.ts @@ -2,20 +2,23 @@ import { Query } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import { RuleTrigger, RuleType } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants.js'; +import { isCloud } from '$lib/system'; export const load = async ({ depends, params }) => { depends(Dependencies.DOMAINS); - const [rules] = await Promise.all([ + const [rules, domains] = await Promise.all([ sdk .forProject(params.region, params.project) .proxy.listRules([ Query.equal('type', RuleType.API), Query.equal('trigger', RuleTrigger.MANUAL) - ]) + ]), + isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null) ]); return { - rules + rules, + domains }; }; From 72fe3ed06f791a49be36f78fe24d28641c6741b9 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 21 May 2025 18:24:22 +0530 Subject: [PATCH 12/12] add: domain in bg if not exists. --- .../domains/add-domain/+page.svelte | 17 +++++++++++++++++ .../domains/add-domain/+page.ts | 7 +++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte index a05896ba3..284afdd20 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte @@ -18,6 +18,8 @@ import { onMount } from 'svelte'; import { ConnectRepoModal } from '$lib/components/git/index.js'; import { isValueOfStringEnum } from '$lib/helpers/types.js'; + import { isCloud } from '$lib/system'; + import { project } from '$routes/(console)/project-[region]-[project]/store'; const routeBase = `${base}/project-${page.params.region}-${page.params.project}/functions/function-${page.params.function}/domains`; @@ -45,6 +47,21 @@ }); async function addDomain() { + let domain = data.domains?.domains.find((d) => d.domain === domainName); + + if (!domain && isCloud) { + try { + domain = await sdk.forConsole.domains.create($project.teamId, domainName); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + + return; + } + } + try { let rule: Models.ProxyRule; if (behaviour === 'BRANCH') { diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts index 773724c3c..d623504b3 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.ts @@ -2,23 +2,26 @@ import { sdk } from '$lib/stores/sdk'; import { Query } from '@appwrite.io/console'; import { RuleTrigger, RuleType } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants'; +import { isCloud } from '$lib/system'; export const load = async ({ parent, depends, params }) => { const { function: func } = await parent(); depends(Dependencies.DOMAINS, Dependencies.FUNCTION_DOMAINS); - const [domains, installations] = await Promise.all([ + const [rules, installations, domains] = await Promise.all([ sdk .forProject(params.region, params.project) .proxy.listRules([ Query.equal('type', RuleType.DEPLOYMENT), Query.equal('trigger', RuleTrigger.MANUAL) ]), - sdk.forProject(params.region, params.project).vcs.listInstallations() + sdk.forProject(params.region, params.project).vcs.listInstallations(), + isCloud ? sdk.forConsole.domains.list() : Promise.resolve(null) ]); return { func, + rules, domains, installations, branches: