diff --git a/src/lib/elements/forms/inputText.svelte b/src/lib/elements/forms/inputText.svelte index 93a7a736e..e2bc35941 100644 --- a/src/lib/elements/forms/inputText.svelte +++ b/src/lib/elements/forms/inputText.svelte @@ -15,7 +15,7 @@ export let autocomplete = false; export let maxlength: number = null; - export let error: string; + export let error: string = null; const handleInvalid = (event: Event) => { event.preventDefault(); diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/+page.svelte index 202c8040a..7320881d0 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/+page.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/+page.svelte @@ -12,8 +12,6 @@ import Table from './table.svelte'; export let data; - - $: console.log(data.domains); diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 07d34a827..61ffff243 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -5,120 +5,78 @@ import { Wizard } from '$lib/layout'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import { - Fieldset, - Layout, - Tooltip, - Icon, - Input, - Divider, - Typography, - Card - } from '@appwrite.io/pink-svelte'; + import { Fieldset, Layout, Tooltip, Icon, Input, Alert } from '@appwrite.io/pink-svelte'; import { goto, invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import { sortBranches } from '$lib/stores/vcs'; - import { organization } from '$lib/stores/organization'; import { consoleVariables, protocol } from '$routes/(console)/store'; - import { IconGlobeAlt, IconInfo } from '@appwrite.io/pink-icons-svelte'; + import { IconInfo } from '@appwrite.io/pink-icons-svelte'; import { LabelCard } from '$lib/components'; - import { isCloud } from '$lib/system'; import { StatusCode } from '@appwrite.io/console'; - import VerificationFieldset from './verificationFieldset.svelte'; - import type { Domain } from '$lib/sdk/domains'; import { statusCodeOptions } from '$lib/stores/domains'; + import ConnectRepoModal from '../../../(components)/connectRepoModal.svelte'; + import { writable } from 'svelte/store'; + import { onMount } from 'svelte'; const backPage = `${base}/project-${$page.params.project}/sites/site-${$page.params.site}/domains`; export let data; + let formComponent: Form; + let isSubmitting = writable(false); + + let showConnectRepo = false; + let behaviour: 'REDIRECT' | 'BRANCH' | 'ACTIVE' = 'ACTIVE'; - let step: 'add' | 'verify' = 'add'; let domainName = ''; let redirect: string = null; let statusCode: number = null; let branch = null; - let domainData: Domain; - let selectedTab: 'cname' | 'nameserver'; - - const redirectOptions = data.domains.rules + const redirectOptions = data.rules.rules .filter((d) => !d.domain.endsWith($consoleVariables._APP_DOMAIN_SITES)) .map((domain) => ({ label: domain.domain, value: domain.domain })); - async function addDomain() { - const isNewDomain = - data.domains.rules.findIndex((rule) => rule.domain === domainName) === -1; - try { - if (isNewDomain && isCloud) { - domainData = await sdk.forConsole.domains.create($organization.$id, domainName); - } + onMount(() => { + if ( + $page.url.searchParams.has('connectRepo') && + $page.url.searchParams.get('connectRepo') === 'true' + ) { + showConnectRepo = true; + } + }); + async function addDomain() { + try { if (behaviour === 'BRANCH') { await sdk.forProject.proxy.createSiteRule(domainName, $page.params.site, branch); } else if (behaviour === 'REDIRECT') { const sc = Object.values(StatusCode).find((code) => parseInt(code) === statusCode); - console.log(statusCode, sc); await sdk.forProject.proxy.createRedirectRule(domainName, $protocol + redirect, sc); } else if (behaviour === 'ACTIVE') { await sdk.forProject.proxy.createSiteRule(domainName, $page.params.site); } - addNotification({ - type: 'success', - message: 'Domain added successfully' - }); await goto(backPage); await invalidate(Dependencies.DOMAINS); await invalidate(Dependencies.SITES_DOMAINS); } catch (error) { - await invalidate(Dependencies.DOMAINS); - addNotification({ type: 'error', message: error.message }); } } - - $: isVerified = domainData?.nameservers - ? domainData?.nameservers.toLocaleLowerCase() === 'appwrite' - : undefined; - -
(step = 'verify')}> - {#if step === 'add'} - - - - Point this domain to the latest deployed version. - - -
- - Point this domain to a specific branch in your repository. - -
- - No repository connected to your site. - -
- - Forward all traffic from this domain to another URL. - -
- -
- - - + +
- {#if behaviour === 'BRANCH'} - {#if data.site?.providerRepositoryId} - {@const sortedBranches = sortBranches(data.branches.branches)} - {@const options = sortedBranches.map((branch) => ({ - label: branch.name, - value: branch.name - }))} - - - {#if !data.branches?.total} - - No branches found in the selected repository. Create a - branch to see it here. - - {/if} - - {/if} - {:else if behaviour === 'REDIRECT'} + + + Point this domain to the latest deployed version. + + + Point this domain to a specific branch in your repository. + + + Forward all traffic from this domain to another URL. + + + + {#if behaviour === 'BRANCH'} +
+ + {#if data.site?.providerRepositoryId} + {@const sortedBranches = sortBranches(data.branches.branches)} + {@const options = sortedBranches.map((branch) => ({ + label: branch.name, + value: branch.name + }))} + + + {#if !data.branches?.total} + + No branches found in the selected repository. Create a + branch to see it here. + + {/if} + + {:else} - - - - Redirect this domain. Domains added to your project will be - listed here. - - - - + value="main" + placeholder="Select branch" /> + + +

+ The domain will be connected to your active deployment. + Connect your Git repository to link a production branch. +

+
+ +
+
+
{/if} - - - -
-
- {:else if step === 'verify'} - - - - - - - - {domainName} - - - + {:else if behaviour === 'REDIRECT'} +
+ + + + + + Redirect this domain. Domains added to your project will be + listed here. + + + + - - - - - {/if} +
+ {/if} +
- +
+ +{#if showConnectRepo} + +{/if} diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.ts b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.ts index 8f61acd19..76275be7a 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.ts +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/+page.ts @@ -5,9 +5,9 @@ import { Dependencies } from '$lib/constants.js'; export const load = async ({ parent, depends }) => { const { site } = await parent(); - depends(Dependencies.DOMAINS); + depends(Dependencies.DOMAINS, Dependencies.SITES_DOMAINS); - const [domains, installations] = await Promise.all([ + const [rules, installations] = await Promise.all([ sdk.forProject.proxy.listRules([ Query.equal('type', RuleType.DEPLOYMENT), Query.equal('trigger', RuleTrigger.MANUAL) @@ -17,7 +17,7 @@ export const load = async ({ parent, depends }) => { return { site, - domains, + rules, installations, branches: site?.installationId && site?.providerRepositoryId diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.svelte new file mode 100644 index 000000000..25e7ab654 --- /dev/null +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.svelte @@ -0,0 +1,65 @@ + + + + + + + + + + {$page.params.domain} + + + + + + + + diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts new file mode 100644 index 000000000..db8caef3a --- /dev/null +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/+page.ts @@ -0,0 +1,24 @@ +import { sdk } from '$lib/stores/sdk'; +import { Dependencies } from '$lib/constants.js'; +import { isCloud } from '$lib/system'; +import type { Domain, DomainsList } from '$lib/sdk/domains.js'; + +export const load = async ({ parent, depends, params }) => { + const { site } = await parent(); + depends(Dependencies.DOMAINS); + + let domain: Domain; + let domainsList: DomainsList; + if (isCloud) { + [domain, domainsList] = await Promise.all([ + sdk.forConsole.domains.get(params.domain), + sdk.forConsole.domains.list() + ]); + } + + return { + site, + domain, + domainsList + }; +}; diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verificationFieldset.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/verificationFieldset.svelte similarity index 100% rename from src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verificationFieldset.svelte rename to src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify-[domain]/verificationFieldset.svelte diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify/+page.ts b/src/routes/(console)/project-[project]/sites/site-[site]/domains/add-domain/verify/+page.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/recordsCard.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/recordsCard.svelte deleted file mode 100644 index 87d83f145..000000000 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/recordsCard.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - -
- - - - - {domain?.domain} - - - - Add the following nameservers on your DNS provider. Note that DNS changes may - take time to propagate fully. - - - - - - Type - Name - Value - - - CNAME - {domain?.domain} - - {globalThis?.location?.origin} - - - - - - - A list of all domain providers and their DNS setting is available here. - - - - - -
diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/retryDomainModal.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/domains/retryDomainModal.svelte index a30c23e79..cfd18874c 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/retryDomainModal.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/retryDomainModal.svelte @@ -6,12 +6,11 @@ import { invalidate } from '$app/navigation'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; import { Dependencies } from '$lib/constants'; - import type { Domain } from '$lib/sdk/domains'; import type { Models } from '@appwrite.io/console'; import CnameTable from '$lib/components/domains/cnameTable.svelte'; export let show = false; - export let selectedDomain: Domain | Models.ProxyRule; + export let selectedDomain: Models.ProxyRule; let error = null; async function retryDomain() { diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/domains/store.ts b/src/routes/(console)/project-[project]/sites/site-[site]/domains/store.ts index 125717ded..b9a352d6e 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/domains/store.ts +++ b/src/routes/(console)/project-[project]/sites/site-[site]/domains/store.ts @@ -7,7 +7,7 @@ export const columns = writable([ title: 'Domain', type: 'string', format: 'string', - width: { min: 200, max: 600 } + width: { min: 200, max: 700 } }, { @@ -20,6 +20,6 @@ export const columns = writable([ id: 'deploymentVcsProviderBranch', title: 'Production branch', type: 'string', - width: { min: 90, max: 150 } + width: { min: 90, max: 200 } } ]);