From 3c8e521ced1943a50f21853177fad0258e7337c3 Mon Sep 17 00:00:00 2001 From: mina Date: Thu, 7 Aug 2025 12:11:28 +0200 Subject: [PATCH 01/13] init DB --- src/lib/config.ts | 2 +- src/lib/data/tatort.db | Bin 24576 -> 24576 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/config.ts b/src/lib/config.ts index 0775514..2e2bf34 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -1,3 +1,3 @@ import { readFileSync } from 'fs'; -export default JSON.parse(readFileSync('./config.json').toString()); +export default JSON.parse(readFileSync('./config_prod.json').toString()); diff --git a/src/lib/data/tatort.db b/src/lib/data/tatort.db index f554e23a622fca898aeb3d9e5ef557a343cfc16b..a1e5df718fe557992da7640f69c07ec31b3bda19 100644 GIT binary patch delta 343 zcma)!y-Gtt5QTS>2uUO?sVuH&I;#t_clYj3oo7hz%>IClh!;U^%p>TdNNOQnI_s47 zrj4~5^#Lpna~Qt!E!TXx=Fb%$yqwPY;PrBL{$vfrK%mK*C>=VB+I!F@DHn3^RvR!< zHK=5cKuXK<0@DT?a&(e>382hvl!(5?kO>rdg<2UIb0FoEgQoa==_#c^o{W}gOhMW_ zi4(?HPwbfZ61&xO_94!Oz5dB4V3)cfFYT^Nx7~r_V#CCyFmGaR`4L-GRkW7c#`zkW z{aWH>`eaciDcgk5CF~ZCZplaSKis0q Date: Thu, 7 Aug 2025 12:41:07 +0200 Subject: [PATCH 02/13] wechsel daher commit --- src/routes/(token-based)/list/[vorgang]/+page.server.ts | 4 ++++ src/routes/(token-based)/list/[vorgang]/+page.svelte | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/routes/(token-based)/list/[vorgang]/+page.server.ts b/src/routes/(token-based)/list/[vorgang]/+page.server.ts index 8fda502..1305bad 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.server.ts +++ b/src/routes/(token-based)/list/[vorgang]/+page.server.ts @@ -14,3 +14,7 @@ export const load: PageServerLoad = async ({ params, url }) => { vorgang }; }; + + +// Ersetze diese Verbindung zum Server durch API Endpunkte + diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index e9bd25f..372a0df 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -18,6 +18,8 @@ /** @type {import('./$types').PageData} */ export let data; + console.log(data); + interface ListItem { name: string; size: number; @@ -130,7 +132,7 @@ } function constructMailToLink() { - const subject = "Link zum Tatvorgang"; + const subject = 'Link zum Tatvorgang'; const link = $page.url.toString().split('?')[0]; const body = `Hallo, @@ -152,8 +154,8 @@ Mit freundlichen Grüßen,

Vorgang {vorgang.name}

{#if data?.user?.admin} - Zugangs-PIN: {vorgang.pin} - + Zugangs-PIN: {vorgang.pin} + {/if}
@@ -186,7 +188,6 @@ Mit freundlichen Grüßen, }}>{item.name} - {#if item.show_button} + + {#if manualError || error} +

{manualError || error}

+ {/if} +
diff --git a/src/routes/(token-based)/list/[vorgang]/+page.server.ts b/src/routes/(token-based)/list/[vorgang]/+page.server.ts index cfacdd7..b8b54e0 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.server.ts +++ b/src/routes/(token-based)/list/[vorgang]/+page.server.ts @@ -1,17 +1,28 @@ import { getVorgangByToken, getCrimesListByToken } from '$lib/server/vorgangService'; import type { PageServerLoad } from './$types'; -export const load: PageServerLoad = async ({ params, url }) => { +export const load: PageServerLoad = async ({fetch, params, url }) => { const vorgangToken = params.vorgang; const vorgangPIN = url.searchParams.get('pin'); + const adminRes = await fetch(`/api/user`) +const user = await adminRes.json() + const crimesList = await getCrimesListByToken(vorgangToken); // TatortList zum Vorgang - const vorgang = getVorgangByToken(vorgangToken); //einzelner Vorgang + const vorgangObjekt = getVorgangByToken(vorgangToken); //einzelner Vorgang //TypeScript darf nicht undefined sein +let vorgangName:string; + if(vorgangObjekt){ +vorgangName = vorgangObjekt.name; + }else{ + vorgangName = ''; + } return { - crimesList, - vorgangPIN, - vorgang + crimesList, //crimesList + vorgangPIN, //caseToken + vorgangName, //caseId? + vorgangObjekt, + user }; }; diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index 372a0df..143a061 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -1,7 +1,5 @@ -
-
-

Vorgang {vorgang.name}

- {#if data?.user?.admin} - Zugangs-PIN: {vorgang.pin} - - {/if} -
-
- +
- Umbenennen - {#if inProgress} -

Vorgang läuft...

- {/if} - {#if err} - Fehler beim Umbenennen - {/if} -
- -
-
+ Umbenennen + {#if inProgress} +

Vorgang läuft...

+ {/if} + {#if err} + Fehler beim Umbenennen + {/if} +
+ +
+ +{/if} - - - -{#if href} - - -{:else} - -{/if} diff --git a/src/lib/components/EditableItem.svelte b/src/lib/components/EditableItem.svelte index 33c49c9..8a3c07b 100644 --- a/src/lib/components/EditableItem.svelte +++ b/src/lib/components/EditableItem.svelte @@ -16,7 +16,6 @@ onDelete = () => {} } = $props(); - let names = list.map((l: ListItem) => l.name); let localName = $state(currentName); let wasCancelled = $state(false); @@ -46,6 +45,8 @@ function commitIfValid() { if (!error && !wasCancelled && localName != currentName) { editedName = localName.trim(); + inputRef?.blur(); + isEditing = false; onSave(editedName, currentName); } else { localName = currentName; diff --git a/src/lib/config.ts b/src/lib/config.ts index 0775514..2e2bf34 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -1,3 +1,3 @@ import { readFileSync } from 'fs'; -export default JSON.parse(readFileSync('./config.json').toString()); +export default JSON.parse(readFileSync('./config_prod.json').toString()); diff --git a/src/lib/data/tatort.db b/src/lib/data/tatort.db index a1e5df718fe557992da7640f69c07ec31b3bda19..4fd1b06d57f43de6263e41efdab9415e03c37b7f 100644 GIT binary patch delta 234 zcmZoTz}Rqrae_1>=R_H2M$U~1%jDT!Gw^@of4x~S;6A@1Clj+cV{&3~YB3WBBeOVX zX>n>%F)srH0~3Eg1OIXU{>_34&HNT-Osou{;iax=AS( zNxG)Vrp88wNtS8mi3SywRl3F*7RF|&DH(>7kK5aFF!8Tv;9t*w18CG@eq9abP)1_R pVNz!f<(z!ZUS(1M3(yFlqrXBOEy@XWGuRp?E@o*?5X;cW7yu0{K7{}P delta 125 zcmZoTz}Rqrae_1>%S0JxMwX2U%jDVKFz|olf3sOo;THeI05&-eCT4NYYWFz1J diff --git a/src/routes/(token-based)/list/[vorgang]/+page.server.ts b/src/routes/(token-based)/list/[vorgang]/+page.server.ts deleted file mode 100644 index b8b54e0..0000000 --- a/src/routes/(token-based)/list/[vorgang]/+page.server.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { getVorgangByToken, getCrimesListByToken } from '$lib/server/vorgangService'; -import type { PageServerLoad } from './$types'; - -export const load: PageServerLoad = async ({fetch, params, url }) => { - const vorgangToken = params.vorgang; - const vorgangPIN = url.searchParams.get('pin'); - - const adminRes = await fetch(`/api/user`) -const user = await adminRes.json() - - const crimesList = await getCrimesListByToken(vorgangToken); // TatortList zum Vorgang - const vorgangObjekt = getVorgangByToken(vorgangToken); //einzelner Vorgang //TypeScript darf nicht undefined sein -let vorgangName:string; - if(vorgangObjekt){ -vorgangName = vorgangObjekt.name; - }else{ - vorgangName = ''; - } - - return { - crimesList, //crimesList - vorgangPIN, //caseToken - vorgangName, //caseId? - vorgangObjekt, - user - }; -}; - - -// Ersetze diese Verbindung zum Server durch API Endpunkte - diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index 143a061..31d2abb 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -9,77 +9,59 @@ import ModalContent from '$lib/components/Modal/ModalContent.svelte'; import ModalFooter from '$lib/components/Modal/ModalFooter.svelte'; import Cube from '$lib/icons/Cube.svelte'; - import EditableItem from '$lib/components/EditableItem.svelte'; - - import { invalidate } from '$app/navigation'; - import { page } from '$app/stores'; + import { invalidate, invalidateAll } from '$app/navigation'; //Seite für die Tatort-Liste let { data } = $props(); - console.log('tatorte: debug ', data); + console.log('tatorte: debug ', data); //zur besseren Nachvollziehbarkeit noch drin gelassen, kann vorm merge gelöscht werden interface ListItem { + //sollte Typ Vorgang sein, aber der einfachheit ist es noch ListItem, damit die Komponente EditableItem für Vorgang und Tatort eingesetzt werden kann name: string; size: number; lastModified: string | number | Date; show_button?: boolean; + prefix?: string; // add other properties as needed } - let vorgang: string = data.vorgangName; // let vorgang = data.caseId; + let vorgangName: string = data.vorgang.vorgangName; // let vorgang = data.caseId; let crimesList: ListItem[] = $state(data.crimesList); - const vorgangPIN: string = data.vorgangPIN; //caseToken?? // const token: string | null = data.caseToken; + const vorgangPIN: string = data.vorgang.vorgangPIN; //caseToken?? // const token: string | null = data.caseToken; + let vorgangToken: string = data.vorgang.vorgangToken; //Variablen für Modal let open = $state(false); let inProgress = $state(false); let err = $state(false); - function uploadSuccessful() { - open = false; - } - //Variabeln für EditableItem - let names: string[] = $state(crimesList.map((l) => l.name)); - let editedName: string = $state(''); - let currentName: string = $state(''); - - let editingId: number; - - // let admin = data?.user?.admin; - let admin = true; - - let rename_input; - - $effect(() => { - console.log('rename_input hat sich geändert:', rename_input); - }); + //Variable um nur admin UI anzuzeigen + let admin = data?.user?.admin; async function handleSave(newName: string, oldName: string) { - console.log('Eltern, speichern erfolgreich', newName, oldName); + open = true; + console.log('Eltern, speichern erfolgreich', newName, oldName); //zur besseren Nachvollziehbarkeit noch drin gelassen, kann vorm merge gelöscht werden try { - const res = await fetch(`/api/list/${vorgang}/${oldName}`, { + const res = await fetch(`/api/list/${vorgangToken}/${oldName}`, { + //irgendwas stimmt hier nicht, vorgangToken führt zu Fehler in API, method: 'PUT', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ vorgang, oldName, newName }) + body: JSON.stringify({ vorgangToken, oldName, newName }) }); - const clone = res.clone(); - const data = await res.json(); - let message = data.message; - let error = !data.success; - - console.log('Tatort Update: ', message); if (!res.ok) { - const msg = await clone.text(); + const msg = await res.text(); console.error('❌ Fehler beim Speichern:', msg); } else { - console.log('✅ Erfolgreich gespeichert:', newName); - await invalidate(''); - currentName = newName; + await invalidate(`/api/list/${vorgangToken}`); + await invalidateAll(); + crimesList = data.crimesList; + console.log('✅ Erfolgreich gespeichert:', crimesList, data.crimesList, newName); //zur besseren Nachvollziehbarkeit noch drin gelassen, kann vorm merge gelöscht werden + open = false; } } catch (err) { console.error('⚠️ Netzwerkfehler:', err); @@ -87,7 +69,7 @@ } async function handleDelete(tatort: string) { - let url = new URL($page.url); + let url = new URL(data.url); url.pathname += `/${tatort}`; console.log('Delete tatort: ', `/api${url.pathname}`, url.pathname); @@ -97,7 +79,7 @@ headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ vorgang, tatort }) + body: JSON.stringify({ vorgangToken, tatort }) }); if (!res.ok) { @@ -105,255 +87,67 @@ console.error('❌ Fehler beim Löschen:', msg); } else { console.log('🗑️ Erfolgreich gelöscht:', url.pathname); + await invalidate(`/api/list/${vorgangToken}`); + await invalidateAll(); + crimesList = data.crimesList; } } catch (err) { console.error('⚠️ Netzwerkfehler beim Löschen:', err); } } - // function defocus_element(i: number) { - // let item = crimesList[i]; - // let text_field_id = `label__${item.name}`; + function constructMailToLink() { + const subject = 'Link zum Tatvorgang'; - // let text_field = document.getElementById(text_field_id); - // if (text_field) { - // text_field.setAttribute('contenteditable', 'false'); - // text_field.textContent = item.name; - // } + const link = data.url.origin + data.url.pathname; + const body = `Hallo, - // // reshow button - // crimesList[i].show_button = true; - // return; - // } + hier ist der Link zum Tatvorgang: + ${link} - // async function handleEditFieldInput(ev: KeyboardEvent, listItemIndex: number) { - // let item = crimesList[listItemIndex]; - // if (ev.key == 'Escape') { - // let text_field_id = `label__${item.name}`; + Der Zugangs-PIN wird zur Sicherheit über einen zweiten Kommunikationskanal übermittelt. - // let text_field = document.getElementById(text_field_id); - // if (text_field) { - // text_field.setAttribute('contenteditable', 'false'); - // text_field.textContent = item.name; - // } + Mit freundlichen Grüßen, + `; - // // reshow button - // item.show_button = true; - // return; - // } - // if (ev.key == 'Enter') { - // let name_field = ev.currentTarget as HTMLElement | null; - // let new_name = name_field - // ? name_field.textContent || (name_field as any).innerText || '' - // : ''; + const mailtoLink = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; - // if (new_name == '') { - // alert('Bitte einen gültigen Namen eingeben.'); - // ev.preventDefault(); - // return; - // } + return mailtoLink; + } - // // actual upload - // // ------------- - - // // to prevent from item being selected - // ev.preventDefault(); - - // // construct PUT URL - // const url = $page.url.pathname.split('?')[0]; - - // let data_obj: { new_name: string; old_name: string } = { new_name: '', old_name: '' }; - // data_obj['new_name'] = new_name; - // data_obj['old_name'] = - // ev.currentTarget && (ev.currentTarget as HTMLElement).id - // ? (ev.currentTarget as HTMLElement).id.split('__')[1] - // : ''; - - // open = true; - // inProgress = true; - - // const response = await fetch(url, { method: 'PUT', body: JSON.stringify(data_obj) }); - - // inProgress = false; - - // if (!response.ok) { - // err = true; - // if (response.status == 400) { - // let json_res = await response.json(); - // return; - // } - // throw new Error(`Fehlgeschlagen: ${response.status}`); - // } else { - // uploadSuccessful(); - // setTimeout(() => { - // window.location.reload(); - // }, 500); - // } - - // // --- upload finished --- - - // return; - // } - // } - - // function constructMailToLink() { - // const subject = 'Link zum Tatvorgang'; - // const link = $page.url.toString().split('?')[0]; - // const body = `Hallo, - - // hier ist der Link zum Tatvorgang: - // ${link} - - // Der Zugangs-PIN wird zur Sicherheit über einen zweiten Kommunikationskanal übermittelt. - - // Mit freundlichen Grüßen, - // `; - - // const mailtoLink = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; - - // return mailtoLink; - // } + function closeModal() { + open = false; + } -{#if vorgang} +{#if data.vorgang && data.crimesList}
-

Vorgang {vorgang}

+

Vorgang {vorgangName}

- + {#if admin} + Zugangs-PIN: {vorgangPIN} + + {/if}
    - {#each crimesList as item, crimeListItemIndex} - - + {#each data.crimesList as item, crimeListItemIndex}
  • {#if admin} Fehler beim Umbenennen {/if} - +
    {/if} diff --git a/src/routes/(token-based)/list/[vorgang]/+page.ts b/src/routes/(token-based)/list/[vorgang]/+page.ts new file mode 100644 index 0000000..ab4cfaf --- /dev/null +++ b/src/routes/(token-based)/list/[vorgang]/+page.ts @@ -0,0 +1,27 @@ +import { redirect } from '@sveltejs/kit'; + +export async function load({fetch, params, url}){ + const vorgangResponse = await fetch(`/api/list`); + const vorgangList = await vorgangResponse.json() + const vorgangToken = params.vorgang; + const crimesListResponse = await fetch(`/api/list/${vorgangToken}`) + const crimesList = await crimesListResponse.json(); + const vorgang = vorgangList.find(v => v.vorgangToken === vorgangToken); //vorgang sollte ein eigener Typ werden, und dann kann man es hier vernünftig typisieren + if(!vorgang || !crimesList){ + throw new Error(`Fehlgeschlagen, es wurden keine Daten zum token gefunden`); + } + + //Variabeln für EditableItem + const crimeNames: string[] = crimesList.map((l) => l.name); + + if (crimesList.length === 0) { + throw redirect(302, '/upload'); // weiterleiten auf die hinzufügen seite + } + return { + vorgang, + vorgangList, + crimesList, + url, + crimeNames + } +} diff --git a/src/routes/(token-based)/list/[vorgang]/+server.ts b/src/routes/(token-based)/list/[vorgang]/+server.ts deleted file mode 100644 index b422976..0000000 --- a/src/routes/(token-based)/list/[vorgang]/+server.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { client } from '$lib/minio'; -import { json } from '@sveltejs/kit'; - - -// rename operation for crimes -export async function PUT({ request }: {request: Request}) { - const data = await request.json(); - - // Vorgang - const vorgangToken = request.url.split('/').at(-1); - - // prepare copy, incl. check if new name exists already - const crimeOldName = data["old_name"]; - const crimeS3FullBucketPathOld = `/tatort/${vorgangToken}/${crimeOldName}`; - const crimeNewName = `${vorgangToken}/${data["new_name"]}`; - - try { - await client.statObject('tatort', crimeNewName); - return json({ msg: 'Die Datei existiert bereits.' }, { status: 400 }); - } catch (error) { - // continue operation - console.log(error, 'continue operation'); - } - - // actual copy operation - await client.copyObject('tatort', crimeNewName, crimeS3FullBucketPathOld) - - // delete - await client.removeObject('tatort', `${vorgangToken}/${crimeOldName}`) - - // return success or failure - - return json({ success: 'success' }, { status: 200 }); -}; diff --git a/src/routes/api/list/[vorgang]/[tatort]/+server.ts b/src/routes/api/list/[vorgang]/[tatort]/+server.ts index e48da78..28db96c 100644 --- a/src/routes/api/list/[vorgang]/[tatort]/+server.ts +++ b/src/routes/api/list/[vorgang]/[tatort]/+server.ts @@ -1,5 +1,5 @@ import { BUCKET, client } from '$lib/minio'; -import { json, type RequestHandler } from '@sveltejs/kit'; +import { json } from '@sveltejs/kit'; import { getVorgangByName } from '$lib/server/vorgangService'; export async function GET() { @@ -36,12 +36,13 @@ export async function DELETE({ request }: { request: Request }) { } // rename operation for crimes -export async function PUT({ params, request }: { params: RequestHandler; request: Request }) { +export async function PUT({ params, request }) { const data = await request.json(); // Vorgang - const vorgangName = params.vorgang; - const vorgangToken = getVorgangByName(vorgangName)?.token; + const vorgangToken = params.vorgang; + //const vorgangToken = getVorgangByName(vorgangName)?.token; + // prepare copy, incl. check if new name exists already const crimeOldName = data['oldName']; -- 2.43.0 From 6c9afda777e1f7943dd825e2d0b195fd6c3ab813 Mon Sep 17 00:00:00 2001 From: mina Date: Wed, 13 Aug 2025 12:03:14 +0200 Subject: [PATCH 12/13] Teilbearbeitung des Pull-Requests, nicht fertig da meeting --- src/lib/components/Button.svelte | 2 +- ...tableItem.svelte => NameItemEditor.svelte} | 8 +-- src/lib/config.ts | 2 +- src/lib/data/tatort.db | Bin 24576 -> 24576 bytes .../(token-based)/list/[vorgang]/+page.svelte | 56 +++++++++++------- .../(token-based)/list/[vorgang]/+page.ts | 2 +- 6 files changed, 41 insertions(+), 29 deletions(-) rename src/lib/components/{EditableItem.svelte => NameItemEditor.svelte} (93%) diff --git a/src/lib/components/Button.svelte b/src/lib/components/Button.svelte index 2a2d25a..53153c1 100644 --- a/src/lib/components/Button.svelte +++ b/src/lib/components/Button.svelte @@ -1,6 +1,6 @@ @@ -145,13 +160,13 @@
    {#if admin} - + > {:else} {item.name}Umbenennen {#if inProgress}

    Vorgang läuft...

    - {/if} - {#if err} + {:else if isError} Fehler beim Umbenennen + {:else} + Upload erfolgreich {/if}
    diff --git a/src/routes/(token-based)/list/[vorgang]/+page.ts b/src/routes/(token-based)/list/[vorgang]/+page.ts index ab4cfaf..03ec929 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.ts +++ b/src/routes/(token-based)/list/[vorgang]/+page.ts @@ -11,7 +11,7 @@ export async function load({fetch, params, url}){ throw new Error(`Fehlgeschlagen, es wurden keine Daten zum token gefunden`); } - //Variabeln für EditableItem + //Variabeln für NameItemEditor const crimeNames: string[] = crimesList.map((l) => l.name); if (crimesList.length === 0) { -- 2.43.0 From be9e64cfd8d7ace8db2e271b9f9046488b13270f Mon Sep 17 00:00:00 2001 From: mina Date: Wed, 13 Aug 2025 16:56:35 +0200 Subject: [PATCH 13/13] =?UTF-8?q?=C3=9Cberarbeitung=20des=20Pull=20Request?= =?UTF-8?q?,=20f=C3=BCr=20Chico=20bitte=20offen=20lassen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/NameItemEditor.svelte | 4 ++-- src/routes/(angemeldet)/list/+page.svelte | 14 +++++++------- .../(token-based)/list/[vorgang]/+page.svelte | 7 ++++++- src/routes/api/list/[vorgang]/[tatort]/+server.ts | 6 ------ 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/lib/components/NameItemEditor.svelte b/src/lib/components/NameItemEditor.svelte index 9e6b13e..4a1bddf 100644 --- a/src/lib/components/NameItemEditor.svelte +++ b/src/lib/components/NameItemEditor.svelte @@ -41,10 +41,10 @@ function commitIfValid() { if (!error && !wasCancelled && localName != currentName) { - editedName = localName.trim(); + const trimmedName: string = localName.trim(); inputRef?.blur(); isEditing = false; - onSave(editedName, currentName); + onSave(trimmedName, currentName); } else { localName = currentName; resetEdit(); diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index f2e0a37..ae96f94 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -14,9 +14,6 @@ const target = ev.currentTarget as HTMLElement | null; if (!target) return; let filename = target.id.split('del__')[1]; - - // delete request - // -------------- let url = `/api/list/${filename}`; @@ -46,13 +43,16 @@