From 2acfc1defbaf7e92b1f457c88dec8d67ac71746a Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Fri, 14 Jun 2024 16:04:02 +0000 Subject: [PATCH 1/2] Image upload for adventures --- package.json | 5 +- src/lib/components/AdventureCard.svelte | 20 ++- src/lib/components/CreateNewAdventure.svelte | 27 +++- src/lib/components/ImageModal.svelte | 146 +++++++++++++++++++ src/routes/api/upload/+server.ts | 2 +- 5 files changed, 185 insertions(+), 15 deletions(-) create mode 100644 src/lib/components/ImageModal.svelte diff --git a/package.json b/package.json index 0a9812e6..08ae22ec 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,14 @@ "private": true, "scripts": { "dev": "vite dev", + "generate": "drizzle-kit generate:pg --config drizzle.config.ts", + "migrate": "drizzle-kit push:pg --config drizzle.config.ts", + "minio": "cd minio && docker-compose up", "build": "vite build", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "studio": "drizzle-kit studio --config drizzle.config.ts", - "generate": "drizzle-kit generate:pg --config drizzle.config.ts", - "migrate": "drizzle-kit push:pg --config drizzle.config.ts", "seed": "node seed.js" }, "devDependencies": { diff --git a/src/lib/components/AdventureCard.svelte b/src/lib/components/AdventureCard.svelte index 816cd2e3..d919093e 100644 --- a/src/lib/components/AdventureCard.svelte +++ b/src/lib/components/AdventureCard.svelte @@ -42,12 +42,20 @@ >
- No image available + {#if adventure.imageUrl && adventure.imageUrl !== ""} + No image available + {:else} + No image available + {/if}
diff --git a/src/lib/components/CreateNewAdventure.svelte b/src/lib/components/CreateNewAdventure.svelte index 4ef3dc42..74401025 100644 --- a/src/lib/components/CreateNewAdventure.svelte +++ b/src/lib/components/CreateNewAdventure.svelte @@ -18,8 +18,11 @@ import { onMount } from "svelte"; import { addActivityType, generateDescription, getImage } from "$lib"; import AutoComplete from "./AutoComplete.svelte"; + import ImageModal from "./ImageModal.svelte"; let modal: HTMLDialogElement; + let isImageModalOpen: boolean = false; + let activityTypes: string[] = []; $: selected = ""; @@ -96,8 +99,18 @@ newAdventure = addActivityType(activityInput, newAdventure); activityInput = ""; } + + function upload(e: CustomEvent) { + let key = e.detail; + console.log("EE" + key); + newAdventure.imageUrl = key; + } +{#if isImageModalOpen} + (isImageModalOpen = false)} /> +{/if} + @@ -176,12 +189,14 @@
- +
+ + + diff --git a/src/routes/api/upload/+server.ts b/src/routes/api/upload/+server.ts index 2c403945..bb39d0fe 100644 --- a/src/routes/api/upload/+server.ts +++ b/src/routes/api/upload/+server.ts @@ -64,7 +64,7 @@ export async function POST(event: RequestEvent): Promise { "Content-Type": contentType, }; - const allowedBuckets = ["backgrounds", "profile-pics"]; + const allowedBuckets = ["backgrounds", "profile-pics", "adventures"]; if (!allowedBuckets.includes(bucket)) { return new Response(JSON.stringify({ error: "Invalid bucket name" }), { From 0637ab2df60986b5c056727f7ab2cf0553dee851 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Fri, 14 Jun 2024 16:25:45 +0000 Subject: [PATCH 2/2] feat: Add image upload functionality to adventure creation and editing --- src/lib/components/CreateNewAdventure.svelte | 21 ++++--------- src/lib/components/EditModal.svelte | 33 +++++++++++++++----- src/lib/components/ImageModal.svelte | 20 ++++++++++-- 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/lib/components/CreateNewAdventure.svelte b/src/lib/components/CreateNewAdventure.svelte index 74401025..60a01f20 100644 --- a/src/lib/components/CreateNewAdventure.svelte +++ b/src/lib/components/CreateNewAdventure.svelte @@ -83,16 +83,6 @@ } } - async function searchImage() { - try { - const imageUrl = await getImage(newAdventure.name); - newAdventure.imageUrl = imageUrl; - } catch (error) { - console.error(error); - // Handle the error - } - } - let activityInput: string = ""; function activitySetup() { @@ -108,7 +98,11 @@ {#if isImageModalOpen} - (isImageModalOpen = false)} /> + (isImageModalOpen = false)} + /> {/if} @@ -188,7 +182,6 @@ />
-
@@ -211,9 +205,6 @@ - diff --git a/src/lib/components/EditModal.svelte b/src/lib/components/EditModal.svelte index 95c55ba5..01b01018 100644 --- a/src/lib/components/EditModal.svelte +++ b/src/lib/components/EditModal.svelte @@ -6,6 +6,7 @@ import { onMount } from "svelte"; import { addActivityType, generateDescription, getImage } from "$lib"; import AutoComplete from "./AutoComplete.svelte"; + import ImageModal from "./ImageModal.svelte"; let modal: HTMLDialogElement; console.log(adventureToEdit.id); @@ -87,8 +88,24 @@ // Handle the error } } + + let isImageModalOpen: boolean = false; + + function upload(e: CustomEvent) { + let key = e.detail; + console.log("EE" + key); + adventureToEdit.imageUrl = key; + } +{#if isImageModalOpen} + (isImageModalOpen = false)} + /> +{/if} + @@ -163,13 +180,15 @@ />
- - +
diff --git a/src/lib/components/ImageModal.svelte b/src/lib/components/ImageModal.svelte index 5d7f7cc0..35bccca6 100644 --- a/src/lib/components/ImageModal.svelte +++ b/src/lib/components/ImageModal.svelte @@ -1,7 +1,9 @@ @@ -96,7 +107,7 @@