@@ -70,7 +77,7 @@
Source is empty
{/if}
- {#if deployment?.status === 'ready' && deployment?.$id !== activeDeployment}
+ {#if effectiveStatus === 'ready' && deployment?.$id !== activeDeployment}
{
@@ -82,7 +89,7 @@
Activate
{/if}
- {#if deployment?.status === 'ready' || deployment?.status === 'failed' || deployment?.status === 'building'}
+ {#if effectiveStatus === 'ready' || effectiveStatus === 'failed' || effectiveStatus === 'building'}
@@ -112,7 +119,7 @@
{/if}
- {#if deployment?.status === 'processing' || deployment?.status === 'building' || deployment.status === 'waiting'}
+ {#if effectiveStatus === 'processing' || effectiveStatus === 'building' || effectiveStatus === 'waiting'}
{/if}
- {#if deployment.status !== 'building' && deployment.status !== 'processing' && deployment?.status !== 'waiting'}
+ {#if ['ready', 'failed'].includes(deployment.status)}
import { capitalize } from '$lib/helpers/string';
import { app } from '$lib/stores/app';
+ import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout';
+ import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
import type { Models } from '@appwrite.io/console';
import { Badge, Card, Layout, Logs, Spinner, Typography } from '@appwrite.io/pink-svelte';
import LogsTimer from './logsTimer.svelte';
@@ -38,15 +40,19 @@
emptyCopy?: string;
} = $props();
+ let effectiveStatus = $derived(
+ getEffectiveBuildStatus(deployment.status, deployment.$createdAt, $regionalConsoleVariables)
+ );
+
function setCopy() {
- if (deployment.status === 'failed') {
+ if (effectiveStatus === 'failed') {
return 'Your deployment has failed.';
- } else if (deployment.status === 'building') {
+ } else if (effectiveStatus === 'building') {
//Do not remove empty space before the string it's an invisible character
return '[37mPreparing for build ... [0m\n';
- } else if (deployment.status === 'waiting') {
+ } else if (effectiveStatus === 'waiting') {
return '[37mPreparing for build ... [0m\n';
- } else if (deployment.status === 'processing') {
+ } else if (effectiveStatus === 'processing') {
return '[37mPreparing for build ... [0m\n';
} else {
return emptyCopy;
@@ -62,16 +68,16 @@
Deployment logs
+ type={badgeTypeDeployment(effectiveStatus)} />
-
+
{/if}
- {#if ['waiting', 'processing'].includes(deployment.status) || (deployment.status === 'building' && !deployment?.buildLogs?.length)}
+ {#if ['waiting', 'processing'].includes(effectiveStatus) || (effectiveStatus === 'building' && !deployment?.buildLogs?.length)}
Waiting for build to start...
diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte
index 204ce91ec..47bc28da3 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte
@@ -1,16 +1,21 @@
- {#if ['processing', 'building'].includes(status)}
+ {#if ['processing', 'building'].includes(effectiveStatus)}
diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte
index 6bf425f7d..78ad644f4 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte
@@ -23,6 +23,8 @@
import { isCloud } from '$lib/system';
import { sdk } from '$lib/stores/sdk';
import { capitalize } from '$lib/helpers/string';
+ import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout';
+ import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
import { regionalProtocol } from '$routes/(console)/project-[region]-[project]/store';
import type { Snippet } from 'svelte';
@@ -40,6 +42,9 @@
footer?: Snippet;
} = $props();
+ let effectiveStatus = $derived(
+ getEffectiveBuildStatus(deployment.status, deployment.$createdAt, $regionalConsoleVariables)
+ );
let show = $state(false);
const totalSize = $derived(humanFileSize(deployment?.totalSize ?? 0));
@@ -113,15 +118,15 @@
- {#if deployment.status === 'failed'}
+ {#if effectiveStatus === 'failed'}
Status
+ status={effectiveStatus}
+ label={capitalize(effectiveStatus)} />
{:else}
diff --git a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte
index e1eb6bb66..3c4ee175a 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte
@@ -25,7 +25,8 @@
import { onMount } from 'svelte';
import { invalidate } from '$app/navigation';
import { Dependencies } from '$lib/constants';
- import { sdk } from '$lib/stores/sdk';
+ import { realtime } from '$lib/stores/sdk';
+ import { page } from '$app/state';
export let data;
@@ -49,7 +50,7 @@
$updateCommandGroupRanks({ sites: 1000 });
onMount(() => {
- return sdk.forConsole.realtime.subscribe('console', (response) => {
+ return realtime.forConsole(page.params.region, 'console', (response) => {
if (response.events.includes('sites.*')) {
invalidate(Dependencies.SITES);
}
diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte
index bdb1741ac..3cb100543 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte
@@ -7,42 +7,36 @@
import Aside from '../aside.svelte';
import Logs from '../../(components)/logs.svelte';
import { Copy, SvgIcon } from '$lib/components';
- import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk';
+ import { realtime } from '$lib/stores/sdk';
import { goto } from '$app/navigation';
import { onMount } from 'svelte';
import { getFrameworkIcon } from '$lib/stores/sites';
+ import type { Models } from '@appwrite.io/console';
let { data } = $props();
let deployment = $state(data.deployment);
onMount(() => {
- let subscription: AppwriteRealtimeSubscription;
- sdk.forConsoleIn(page.params.region)
- .realtime.subscribe('console', async (response) => {
- if (
- response.events.includes(
- `sites.${data.site.$id}.deployments.${data.deployment.$id}.update`
- )
- ) {
- deployment = response.payload;
- if (response.payload.status === 'ready') {
- const resolvedUrl = resolve(
- '/(console)/project-[region]-[project]/sites/create-site/finish',
- {
- region: page.params.region,
- project: page.params.project
- }
- );
- await goto(`${resolvedUrl}?site=${data.site.$id}`);
- }
+ return realtime.forConsole(page.params.region, 'console', async (response) => {
+ if (
+ response.events.includes(
+ `sites.${data.site.$id}.deployments.${data.deployment.$id}.update`
+ )
+ ) {
+ deployment = response.payload as Models.Deployment;
+ if (deployment.status === 'ready') {
+ const resolvedUrl = resolve(
+ '/(console)/project-[region]-[project]/sites/create-site/finish',
+ {
+ region: page.params.region,
+ project: page.params.project
+ }
+ );
+ await goto(`${resolvedUrl}?site=${data.site.$id}`);
}
- })
- .then((realtime) => (subscription = realtime));
-
- return () => {
- subscription?.close();
- };
+ }
+ });
});
diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte
index adbf16091..9a3c98817 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte
@@ -7,19 +7,21 @@
import { Button } from '$lib/elements/forms';
import InstantRollbackDomain from './instantRollbackModal.svelte';
import { app } from '$lib/stores/app';
- import { sdk } from '$lib/stores/sdk';
+ import { realtime } from '$lib/stores/sdk';
import { invalidate } from '$app/navigation';
import { Dependencies } from '$lib/constants';
import { onMount } from 'svelte';
import { page } from '$app/state';
import { base } from '$app/paths';
+ import type { PageProps } from './$types';
import { regionalProtocol } from '$routes/(console)/project-[region]-[project]/store';
- export let data;
- let showRollback = false;
+ let { data }: PageProps = $props();
+
+ let showRollback = $state(false);
onMount(() => {
- return sdk.forConsole.realtime.subscribe('console', (response) => {
+ return realtime.forConsole(page.params.region, 'console', (response) => {
if (response.events.includes(`sites.${page.params.site}.deployments.*`)) {
invalidate(Dependencies.SITE);
}
diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte
index 8ff3fe4e8..64a7454fa 100644
--- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte
+++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte
@@ -1,7 +1,7 @@
{#snippet footer()}
- {#if deployment?.status === 'ready' && data.proxyRuleList?.total}
+ {#if effectiveStatus === 'ready' && data.proxyRuleList?.total}
@@ -269,7 +293,11 @@
bind:value={buildCommand}
placeholder={frameworkAdapterData?.buildCommand ||
'Enter build command'} />
- reset('buildCommand')}>
+ reset('buildCommand')}>
Reset
@@ -280,7 +308,12 @@
bind:value={outputDirectory}
placeholder={frameworkAdapterData?.outputDirectory ||
'Enter output directory'} />
- reset('outputDirectory')}>
+ reset('outputDirectory')}>
Reset
@@ -305,7 +338,7 @@
- Update
+ Update
diff --git a/src/routes/(console)/supportWizard.svelte b/src/routes/(console)/supportWizard.svelte
index 6c6aa7045..ac39f7e89 100644
--- a/src/routes/(console)/supportWizard.svelte
+++ b/src/routes/(console)/supportWizard.svelte
@@ -125,11 +125,11 @@