From ef2621a908bf1a531c3e7fea865e7a00390216f0 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 14 Jun 2025 13:49:13 +0530 Subject: [PATCH 1/2] fix: time display logic. --- .../create-function/(components)/aside.svelte | 10 ++++- .../(components)/details.svelte | 43 +++++++++++++------ .../repository-[repository]/+page.svelte | 36 ++++++++++++++-- .../repository-[repository]/+page.ts | 16 +++---- 4 files changed, 78 insertions(+), 27 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/aside.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/aside.svelte index d63fe5d05..4acf3d41a 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/aside.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/aside.svelte @@ -1,6 +1,6 @@ @@ -18,7 +19,7 @@ - {#if selectedRuntime?.name} + {#if selectedRuntime?.name && !loading} Runtime @@ -30,6 +31,11 @@ + {:else if loading} + + + + {/if} {#if showGitData} {#if repositoryName} diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/details.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/details.svelte index baa9692af..9b097f7a3 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/details.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/(components)/details.svelte @@ -7,7 +7,7 @@ import { organization } from '$lib/stores/organization'; import { isCloud } from '$lib/system'; import { IconPencil } from '@appwrite.io/pink-icons-svelte'; - import { Fieldset, Icon, Input, Layout, Tag } from '@appwrite.io/pink-svelte'; + import { Fieldset, Icon, Input, Layout, Skeleton, Tag } from '@appwrite.io/pink-svelte'; import type { ComponentType } from 'svelte'; export let name: string; @@ -25,6 +25,7 @@ value: string; label: string; }[] = []; + export let loading = false; let showCustomId = false; @@ -51,13 +52,20 @@ {/if} {#key runtime} - + {#if loading} + + + + + {:else} + + {/if} {/key} {#if isCloud} @@ -79,12 +87,19 @@ {/if} {#if showEntrypoint} - + {#if loading} + + + + + {:else} + + {/if} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.svelte index 4414e0ddc..d2ed95c5d 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.svelte @@ -10,7 +10,7 @@ import { installation, repository } from '$lib/stores/vcs'; import { Layout } from '@appwrite.io/pink-svelte'; import { writable } from 'svelte/store'; - import { ID, Runtime, VCSDeploymentType } from '@appwrite.io/console'; + import { ID, Runtime, VCSDeploymentType, VCSDetectionType } from '@appwrite.io/console'; import type { Models } from '@appwrite.io/console'; import { onMount } from 'svelte'; import Details from '../(components)/details.svelte'; @@ -57,12 +57,40 @@ let silentMode = false; let specification = specificationOptions[0].value; + let detectingRuntime = true; + onMount(async () => { installation.set(data.installation); repository.set(data.repository); name = data.repository.name; + + await detectRuntime(); }); + async function detectRuntime() { + try { + detectingRuntime = true; + + const detections = (await sdk + .forProject(page.params.regionn, page.params.project) + .vcs.createRepositoryDetection( + data.installation.$id, + page.params.repository, + VCSDetectionType.Runtime + )) as unknown as Models.DetectionRuntime; /* SDK return type is wrong atm */ + + entrypoint = detections.entrypoint; + buildCommand = detections.commands; + runtime = detections.runtime as Runtime; + + trackEvent(Submit.FrameworkDetect, { runtime, source: 'repository' }); + } catch (error) { + trackError(error, Submit.FrameworkDetect); + } finally { + detectingRuntime = false; + } + } + async function create() { try { const func = await sdk @@ -154,7 +182,8 @@ bind:specification {specificationOptions} options={runtimeOptions} - showEntrypoint /> + showEntrypoint + loading={detectingRuntime} /> + {rootDir} + loading={detectingRuntime} /> diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.ts b/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.ts index 6b98ecef0..66fc213fa 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/repository-[repository]/+page.ts @@ -3,17 +3,17 @@ import { sdk } from '$lib/stores/sdk'; export const load = async ({ parent, params, url }) => { const { installations, runtimesList, specificationsList } = await parent(); - const [repository] = await Promise.all([ - sdk - .forProject(params.region, params.project) - .vcs.getRepository(url.searchParams.get('installation'), params.repository) - ]); + const repository = await sdk + .forProject(params.region, params.project) + .vcs.getRepository(url.searchParams.get('installation'), params.repository); + + const installation = installations.installations.find( + (installation) => installation.$id === url.searchParams.get('installation') + ); return { + installation, installations, - installation: installations.installations.find( - (installation) => installation.$id === url.searchParams.get('installation') - ), repository, runtimesList, specificationsList From 96a1c69409cbfaac6821244c0117f58be880768f Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 14 Jun 2025 13:53:16 +0530 Subject: [PATCH 2/2] update: cleaning. --- .../repository-[repository]/+page.svelte | 2 +- .../repository-[repository]/+page.ts | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte index a061a490f..f08f635a1 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte @@ -62,7 +62,7 @@ .forProject(page.params.region, page.params.project) .vcs.createRepositoryDetection( $installation.$id, - data.repository.id, + page.params.repository, VCSDetectionType.Framework, rootDir ); diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.ts b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.ts index f5607d122..de559a2f3 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.ts @@ -5,11 +5,14 @@ import { buildVerboseDomain } from '../../store'; export const load = async ({ parent, params, url }) => { const { installations, frameworks, project, organization, regionalConsoleVariables } = await parent(); - const [repository] = await Promise.all([ - sdk - .forProject(params.region, params.project) - .vcs.getRepository(url.searchParams.get('installation'), params.repository) - ]); + + const repository = await sdk + .forProject(params.region, params.project) + .vcs.getRepository(url.searchParams.get('installation'), params.repository); + + const installation = installations.installations.find( + (installation) => installation.$id === url.searchParams.get('installation') + ); const domain = await buildVerboseDomain( regionalConsoleVariables._APP_DOMAIN_SITES, @@ -21,9 +24,7 @@ export const load = async ({ parent, params, url }) => { return { installations, - installation: installations.installations.find( - (installation) => installation.$id === url.searchParams.get('installation') - ), + installation, repository, frameworks, domain