diff --git a/apps/app/src/lib/profile/MediaGallery.svelte b/apps/app/src/lib/profile/MediaGallery.svelte
index 1d7ac26..c16a882 100644
--- a/apps/app/src/lib/profile/MediaGallery.svelte
+++ b/apps/app/src/lib/profile/MediaGallery.svelte
@@ -1,17 +1,14 @@
-{#if editorMode}
-
-{/if}
-
{#if person.photos?.length || person.videos?.length}
{photos()} & {video()}
@@ -30,3 +27,43 @@
{/each}
{/if}
+
+{#if editorMode}
+ {upload()}
+
+
+
+
+{/if}
+
+{#if uploadModal}
+ {
+ uploadModal = false;
+ }}
+ {mediaType}
+ onCreation={(newMedia: { url: string; name: string; description: string; date: string }) => {
+ if (mediaType === 'photo') {
+ person.photos = [...(person.photos ?? []), newMedia];
+ } else if (mediaType === 'video') {
+ person.videos = [...(person.videos ?? []), newMedia];
+ }
+ }}
+ />
+{/if}
diff --git a/apps/app/src/lib/profile/Modal.svelte b/apps/app/src/lib/profile/Modal.svelte
index 5389d3e..0c2633d 100644
--- a/apps/app/src/lib/profile/Modal.svelte
+++ b/apps/app/src/lib/profile/Modal.svelte
@@ -1,4 +1,5 @@
-
+
-
+
+ import { date, description, file, media_title, title, upload } from '$lib/paraglide/messages';
+
+ export let closeModal: () => void;
+ export let onCreation:(newMedia:{
+ url: string,
+ name: string,
+ description: string,
+ date: string
+ }) => void = () => {};
+ export let mediaType: 'audio' | 'video' | 'photo' = 'photo';
+
+ let selectedFile: File | null = null;
+
+ let newMedia = {
+ url: '',
+ name: '',
+ description: '',
+ date: ''
+ };
+
+ // Determine accepted input types based on mediaType
+ $: acceptTypes =
+ mediaType === 'audio' ? 'audio/*' : mediaType === 'video' ? 'video/*' : 'image/*';
+
+ function handleFileChange(e: Event) {
+ const input = e.target as HTMLInputElement;
+ if (input.files && input.files.length > 0) {
+ selectedFile = input.files[0];
+ }
+ }
+
+ async function uploadMedia() {
+ if (!selectedFile) {
+ alert('Please select a file');
+ return;
+ }
+
+ // Simulate file upload (replace with actual upload logic)
+ newMedia.url = URL.createObjectURL(selectedFile);
+
+ // Emit event using custom dispatch
+ const uploadEvent = new CustomEvent('upload', {
+ detail: { ...newMedia }
+ });
+ dispatchEvent(uploadEvent);
+
+ // Clean up
+ selectedFile = null;
+ newMedia = { url: '', name: '', description: '', date: '' };
+ onCreation(newMedia);
+ closeModal();
+ }
+
+
+
+
+
{upload()+mediaType}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+