diff --git a/src/routes/api/recipes/blank/+server.ts b/src/routes/api/recipes/blank/+server.ts new file mode 100644 index 0000000..4e038c6 --- /dev/null +++ b/src/routes/api/recipes/blank/+server.ts @@ -0,0 +1,30 @@ +import type { RequestHandler } from './$types'; +import { json } from '@sveltejs/kit'; +import { getDb } from '$lib/server/db'; +import { insertRecipe } from '$lib/server/recipes/repository'; + +// Legt ein leeres Rezept an und gibt die ID zurück. Der Client leitet +// danach nach /recipes/{id}?edit=1 um, damit der Editor sofort offen ist. +// Titel "Neues Rezept" ist ein Platzhalter — der User überschreibt ihn +// beim ersten Speichern. +export const POST: RequestHandler = async () => { + const id = insertRecipe(getDb(), { + id: null, + title: 'Neues Rezept', + description: null, + source_url: null, + source_domain: null, + image_path: null, + servings_default: 4, + servings_unit: null, + prep_time_min: null, + cook_time_min: null, + total_time_min: null, + cuisine: null, + category: null, + ingredients: [], + steps: [], + tags: [] + }); + return json({ id }); +}; diff --git a/src/routes/recipes/+page.svelte b/src/routes/recipes/+page.svelte index 2eddcc4..5efbdd6 100644 --- a/src/routes/recipes/+page.svelte +++ b/src/routes/recipes/+page.svelte @@ -1,20 +1,85 @@
-

Register

-

{data.recipes.length} Rezepte insgesamt

+
+
+

Register

+

{data.recipes.length} Rezepte insgesamt

+
+
+ + {#if menuOpen} + + {/if} +
+
-
- - - -
+{#if importOpen} + +{/if}
import { onMount, onDestroy, tick } from 'svelte'; + import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { Heart, @@ -315,6 +316,15 @@ } onMount(() => { + // Wenn wir über "Manuell anlegen" hier landen, ist ?edit=1 gesetzt + // und wir starten direkt im Editor. Den Param danach aus der URL + // entfernen, damit Refresh nicht automatisch wieder edit-Mode ist. + if ($page.url.searchParams.get('edit') === '1') { + editMode = true; + const url = new URL(window.location.href); + url.searchParams.delete('edit'); + history.replaceState(history.state, '', url.toString()); + } const stored = localStorage.getItem('kochwas.wakeLock'); if (stored !== null) wakeLockEnabled = stored === '1'; if (wakeLockEnabled) void acquireWakeLock();