feat(import): enhance image URL extraction and logging during recipe import

This commit is contained in:
Nils-Johan Gynther
2026-04-22 22:08:05 +02:00
parent 28606d7abd
commit 71bc162015
8 changed files with 163 additions and 21 deletions
@@ -19,6 +19,22 @@ export const POST = withAuth(async (request, session) => {
});
const text = await response.text();
try {
const parsed = JSON.parse(text);
// eslint-disable-next-line no-console
console.log('[QuickImportProxy] backend response', {
status: response.status,
hasMarkdown: Boolean(parsed?.markdown),
imageUrl: parsed?.imageUrl ?? null,
imageWarning: parsed?.imageWarning ?? null,
});
} catch {
// eslint-disable-next-line no-console
console.log('[QuickImportProxy] backend non-json response', {
status: response.status,
contentType: response.headers.get('content-type'),
});
}
return new NextResponse(text, {
status: response.status,
headers: { 'Content-Type': response.headers.get('content-type') ?? 'application/json' },
+22
View File
@@ -83,12 +83,23 @@ function ReceptImport() {
const res = await fetch('/api/quick-import-proxy', { method: 'POST', body: formData });
if (!res.ok) throw new Error(await parseErrorResponse(res));
const data = await res.json();
// eslint-disable-next-line no-console
console.log('[ImportTabsClient:file] quick-import response', {
imageUrl: data.imageUrl ?? null,
imageWarning: data.imageWarning ?? null,
markdownLength: (data.markdown ?? '').length,
});
sessionStorage.setItem('prefilled_markdown', data.markdown ?? '');
if (data.imageUrl) {
sessionStorage.setItem('prefilled_image_url', data.imageUrl);
} else {
sessionStorage.removeItem('prefilled_image_url');
}
// eslint-disable-next-line no-console
console.log('[ImportTabsClient:file] sessionStorage snapshot', {
prefilled_markdown: sessionStorage.getItem('prefilled_markdown')?.length ?? 0,
prefilled_image_url: sessionStorage.getItem('prefilled_image_url'),
});
router.push('/recipes/write');
} catch (err) {
setError(err instanceof Error ? err.message : 'Importen misslyckades.');
@@ -110,12 +121,23 @@ function ReceptImport() {
});
if (!res.ok) throw new Error(await parseErrorResponse(res));
const data = await res.json();
// eslint-disable-next-line no-console
console.log('[ImportTabsClient:url] quick-import response', {
imageUrl: data.imageUrl ?? null,
imageWarning: data.imageWarning ?? null,
markdownLength: (data.markdown ?? '').length,
});
sessionStorage.setItem('prefilled_markdown', data.markdown ?? '');
if (data.imageUrl) {
sessionStorage.setItem('prefilled_image_url', data.imageUrl);
} else {
sessionStorage.removeItem('prefilled_image_url');
}
// eslint-disable-next-line no-console
console.log('[ImportTabsClient:url] sessionStorage snapshot', {
prefilled_markdown: sessionStorage.getItem('prefilled_markdown')?.length ?? 0,
prefilled_image_url: sessionStorage.getItem('prefilled_image_url'),
});
router.push('/recipes/write');
} catch (err) {
setError(err instanceof Error ? err.message : 'Importen misslyckades.');
@@ -39,12 +39,23 @@ export default function ImportFilePage() {
}
const data = await res.json();
// eslint-disable-next-line no-console
console.log('[ImportFilePage:file] quick-import response', {
imageUrl: data.imageUrl ?? null,
imageWarning: data.imageWarning ?? null,
markdownLength: (data.markdown ?? '').length,
});
sessionStorage.setItem('prefilled_markdown', data.markdown ?? '');
if (data.imageUrl) {
sessionStorage.setItem('prefilled_image_url', data.imageUrl);
} else {
sessionStorage.removeItem('prefilled_image_url');
}
// eslint-disable-next-line no-console
console.log('[ImportFilePage:file] sessionStorage snapshot', {
prefilled_markdown: sessionStorage.getItem('prefilled_markdown')?.length ?? 0,
prefilled_image_url: sessionStorage.getItem('prefilled_image_url'),
});
router.push('/recipes/write');
} catch (err) {
setError(err instanceof Error ? err.message : 'Importen misslyckades.');
@@ -77,12 +88,23 @@ export default function ImportFilePage() {
}
const data = await res.json();
// eslint-disable-next-line no-console
console.log('[ImportFilePage:url] quick-import response', {
imageUrl: data.imageUrl ?? null,
imageWarning: data.imageWarning ?? null,
markdownLength: (data.markdown ?? '').length,
});
sessionStorage.setItem('prefilled_markdown', data.markdown ?? '');
if (data.imageUrl) {
sessionStorage.setItem('prefilled_image_url', data.imageUrl);
} else {
sessionStorage.removeItem('prefilled_image_url');
}
// eslint-disable-next-line no-console
console.log('[ImportFilePage:url] sessionStorage snapshot', {
prefilled_markdown: sessionStorage.getItem('prefilled_markdown')?.length ?? 0,
prefilled_image_url: sessionStorage.getItem('prefilled_image_url'),
});
router.push('/recipes/write');
} catch (err) {
setError(err instanceof Error ? err.message : 'Importen misslyckades.');
@@ -62,6 +62,11 @@ export default function WriteRecipePage() {
// Kontrollera om det finns förifylld Markdown från snabbimport
const prefilledMarkdown = sessionStorage.getItem('prefilled_markdown');
const prefilledImageUrl = sessionStorage.getItem('prefilled_image_url');
// eslint-disable-next-line no-console
console.log('[WriteRecipePage] prefilled values', {
prefilledMarkdownLength: prefilledMarkdown?.length ?? 0,
prefilledImageUrl,
});
if (prefilledImageUrl) {
setImageUrl(prefilledImageUrl);
sessionStorage.removeItem('prefilled_image_url');
@@ -191,6 +196,8 @@ export default function WriteRecipePage() {
note: ing.editedNote || undefined,
})),
};
// eslint-disable-next-line no-console
console.log('[WriteRecipePage] create payload imageUrl', body.imageUrl ?? null);
try {
const res = await authFetch('/api/recipes', {
@@ -203,6 +210,9 @@ export default function WriteRecipePage() {
throw new Error(errorMessage);
}
// eslint-disable-next-line no-console
console.log('[WriteRecipePage] recipe create success');
setStep('saved');
router.refresh();
setTimeout(() => router.push('/recipes'), 2000);