From 73fbd462beb111fbdac021eb2dd9f1a7413656d7 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Sun, 23 Nov 2025 13:28:59 +0100 Subject: [PATCH] feat(projects): load preview image in component instead of doing it in the store --- .../Projects/TopScreen/Previews.vue | 41 ++++++++ .../Projects/TopScreen/TopScreen.vue | 94 +------------------ app/stores/projects.ts | 8 +- 3 files changed, 50 insertions(+), 93 deletions(-) create mode 100644 app/components/Projects/TopScreen/Previews.vue diff --git a/app/components/Projects/TopScreen/Previews.vue b/app/components/Projects/TopScreen/Previews.vue new file mode 100644 index 0000000..2007b4a --- /dev/null +++ b/app/components/Projects/TopScreen/Previews.vue @@ -0,0 +1,41 @@ + diff --git a/app/components/Projects/TopScreen/TopScreen.vue b/app/components/Projects/TopScreen/TopScreen.vue index 5e07cf6..6673553 100644 --- a/app/components/Projects/TopScreen/TopScreen.vue +++ b/app/components/Projects/TopScreen/TopScreen.vue @@ -1,103 +1,15 @@ diff --git a/app/stores/projects.ts b/app/stores/projects.ts index 89f7c89..f9c20ce 100644 --- a/app/stores/projects.ts +++ b/app/stores/projects.ts @@ -62,15 +62,17 @@ export const useProjectsStore = defineStore("projects", { projects: [] as { description: string; thumbnail: string; - preview: HTMLImageElement; + preview: string; url: string | null; body: MarkdownBody; }[], currentProject: 0, + loading: true, }), actions: { async loadProjects() { + this.loading = true; const { data: projects } = await useAsyncData("projects", () => queryCollection("projects").order("order", "ASC").all(), ); @@ -84,11 +86,13 @@ export const useProjectsStore = defineStore("projects", { this.projects.push({ description: project.description, thumbnail: `/images/projects/thumbnails/${id}.webp`, - preview: createImage(`/images/projects/previews/${id}.webp`), + preview: `/images/projects/previews/${id}.webp`, url: project.url, body: simplifyMarkdownAST(project.body), }); } + + this.loading = false; }, visitProject() {