From d3bbe0fb9f27af335dc2bb211b6d0030d9564ff9 Mon Sep 17 00:00:00 2001 From: ernstmul Date: Wed, 14 May 2025 10:41:26 +0200 Subject: [PATCH] Auto select last artifact --- src/lib/helpers/artifact.ts | 7 ++++--- .../project-[project]/studio/+layout.ts | 6 ------ .../project-[project]/studio/+page.ts | 19 +++++++++++++++++++ .../studio/artifact-[artifact]/+layout.svelte | 4 +++- 4 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 src/routes/(console)/project-[project]/studio/+page.ts diff --git a/src/lib/helpers/artifact.ts b/src/lib/helpers/artifact.ts index 89fe65526..fe32839f6 100644 --- a/src/lib/helpers/artifact.ts +++ b/src/lib/helpers/artifact.ts @@ -5,9 +5,10 @@ import { base } from '$app/paths'; import { page } from '$app/state'; import { Dependencies } from '$lib/constants'; -export async function createArtifact() { +export async function createArtifact(projectId?: string) { const artifact = await sdk.forProject.imagine.create(ID.unique()); - - await goto(`${base}/project-${page.params.project}/studio/artifact-${artifact.$id}`); + await goto( + `${base}/project-${projectId ?? page.params.project}/studio/artifact-${artifact.$id}` + ); invalidate(Dependencies.ARTIFACTS); } diff --git a/src/routes/(console)/project-[project]/studio/+layout.ts b/src/routes/(console)/project-[project]/studio/+layout.ts index c3c0e94fd..00e87fb47 100644 --- a/src/routes/(console)/project-[project]/studio/+layout.ts +++ b/src/routes/(console)/project-[project]/studio/+layout.ts @@ -2,12 +2,6 @@ import { Dependencies } from '$lib/constants'; import { sdk } from '$lib/stores/sdk'; import { error } from '@sveltejs/kit'; import type { LayoutLoad } from './$types'; -import { preferences } from '$lib/stores/preferences'; -import { failedInvoice } from '$lib/stores/billing'; -import { isCloud } from '$lib/system'; -import type { Organization } from '$lib/stores/organization'; -import { defaultRoles, defaultScopes } from '$lib/constants'; -import type { Plan } from '$lib/sdk/billing'; export const load: LayoutLoad = async ({ params, depends }) => { depends(Dependencies.ARTIFACTS); diff --git a/src/routes/(console)/project-[project]/studio/+page.ts b/src/routes/(console)/project-[project]/studio/+page.ts new file mode 100644 index 000000000..8d68d024d --- /dev/null +++ b/src/routes/(console)/project-[project]/studio/+page.ts @@ -0,0 +1,19 @@ +import type { PageLoad } from './$types'; +import { sdk } from '$lib/stores/sdk'; +import { createArtifact } from '$lib/helpers/artifact'; +import { goto } from '$app/navigation'; +import { base } from '$app/paths'; +import { page } from '$app/state'; + +export const load: PageLoad = async ({ params }) => { + const artifacts = await sdk.forProject.imagine.list(); + if (artifacts.total === 0) { + await createArtifact(params.project); + return; + } + + const lastUpdatedArtifact = artifacts.artifacts.reduce((latest, artifact) => { + return new Date(artifact.$updatedAt) > new Date(latest.$updatedAt) ? artifact : latest; + }); + await goto(`${base}/project-${params.project}/studio/artifact-${lastUpdatedArtifact.$id}`); +}; diff --git a/src/routes/(console)/project-[project]/studio/artifact-[artifact]/+layout.svelte b/src/routes/(console)/project-[project]/studio/artifact-[artifact]/+layout.svelte index 71ec000ce..8e7a068cf 100644 --- a/src/routes/(console)/project-[project]/studio/artifact-[artifact]/+layout.svelte +++ b/src/routes/(console)/project-[project]/studio/artifact-[artifact]/+layout.svelte @@ -164,7 +164,9 @@ mappedArtifacts.push({ name: 'Create artifact', isActive: false, - onClick: createArtifact, + onClick: () => { + createArtifact(); + }, icon: IconPlus }); return mappedArtifacts;