feat: add support for prefilled image URL in recipe creation and display

This commit is contained in:
Nils-Johan Gynther
2026-04-16 18:24:44 +02:00
parent d5b360fd62
commit 195d1ddbc6
2 changed files with 27 additions and 0 deletions
+3
View File
@@ -44,6 +44,9 @@ export default function CreateRecipePage() {
// Omdirigera till /recipes/write med förifylld Markdown // Omdirigera till /recipes/write med förifylld Markdown
// Vi använder sessionStorage för att passa data mellan sidor // Vi använder sessionStorage för att passa data mellan sidor
sessionStorage.setItem('prefilled_markdown', data.markdown); sessionStorage.setItem('prefilled_markdown', data.markdown);
if (data.imageUrl) {
sessionStorage.setItem('prefilled_image_url', data.imageUrl);
}
router.push('/recipes/write'); router.push('/recipes/write');
} }
} catch (err) { } catch (err) {
@@ -58,6 +58,11 @@ export default function WriteRecipePage() {
// Kontrollera om det finns förifylld Markdown från snabbimport // Kontrollera om det finns förifylld Markdown från snabbimport
const prefilledMarkdown = sessionStorage.getItem('prefilled_markdown'); const prefilledMarkdown = sessionStorage.getItem('prefilled_markdown');
const prefilledImageUrl = sessionStorage.getItem('prefilled_image_url');
if (prefilledImageUrl) {
setImageUrl(prefilledImageUrl);
sessionStorage.removeItem('prefilled_image_url');
}
if (prefilledMarkdown) { if (prefilledMarkdown) {
setMarkdown(prefilledMarkdown); setMarkdown(prefilledMarkdown);
sessionStorage.removeItem('prefilled_markdown'); sessionStorage.removeItem('prefilled_markdown');
@@ -174,6 +179,7 @@ export default function WriteRecipePage() {
name: editedName, name: editedName,
description: editedDescription || undefined, description: editedDescription || undefined,
instructions: editedInstructions || undefined, instructions: editedInstructions || undefined,
imageUrl: imageUrl || undefined,
ingredients: validIngredients.map((ing) => ({ ingredients: validIngredients.map((ing) => ({
productId: ing.selectedProductId, productId: ing.selectedProductId,
quantity: Number(ing.editedQuantity), quantity: Number(ing.editedQuantity),
@@ -305,6 +311,24 @@ Stek löken i lite smör. Tillsätt köttfärsen...`}</pre>
<div style={{ display: 'grid', gap: '1rem', padding: '1rem', border: '1px solid #ddd', borderRadius: '8px' }}> <div style={{ display: 'grid', gap: '1rem', padding: '1rem', border: '1px solid #ddd', borderRadius: '8px' }}>
<h2 style={{ margin: 0, fontSize: '1.1rem' }}>Receptdetaljer</h2> <h2 style={{ margin: 0, fontSize: '1.1rem' }}>Receptdetaljer</h2>
{imageUrl && (
<div>
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: 600 }}>Bild</label>
<img
src={imageUrl}
alt="Receptbild"
style={{ width: '100%', maxHeight: '220px', objectFit: 'cover', borderRadius: '6px', border: '1px solid #ddd' }}
/>
<button
type="button"
onClick={() => setImageUrl(null)}
style={{ marginTop: '0.4rem', fontSize: '0.8rem', color: '#dc2626', background: 'none', border: 'none', cursor: 'pointer', padding: 0 }}
>
Ta bort bild
</button>
</div>
)}
<div> <div>
<label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: 600 }}>Receptnamn *</label> <label style={{ display: 'block', marginBottom: '0.5rem', fontWeight: 600 }}>Receptnamn *</label>
<input <input