35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
// import PIHKAAL_ME_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/pihkaal.me.webp";
|
|
// import TLOCK_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/tlock.webp";
|
|
// import SIMPLE_QR_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/simple-qr.webp";
|
|
// import LILOU_CAT_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/lilou.cat.webp";
|
|
// import LBF_BOT_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/lbf-bot.webp";
|
|
// import RAYLIB_SPEENDRUNS_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/raylib-speedruns.webp";
|
|
// import SP3WEB_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/s3pweb.webp";
|
|
// import BIOBLEUD_THUMBNAIL from "/assets/images/projects/bottom-screen/thumbnails/biobleud.webp";
|
|
|
|
export const useProjectsStore = defineStore("projects", {
|
|
state: () => ({
|
|
projects: [] as {
|
|
description: string;
|
|
thumbnail: string;
|
|
url: string | null;
|
|
}[],
|
|
currentProject: 0,
|
|
}),
|
|
|
|
actions: {
|
|
async loadProjects() {
|
|
const { data: projects } = await useAsyncData("projects", () =>
|
|
queryCollection("projects").order("order", "ASC").all(),
|
|
);
|
|
if (!projects.value) throw "Cannot load projects";
|
|
this.projects = projects.value;
|
|
},
|
|
|
|
visitProject() {
|
|
const url = this.projects[this.currentProject]!.url;
|
|
if (url) navigateTo(url, { external: true, open: { target: "_blank" } });
|
|
},
|
|
},
|
|
});
|