feat: Add expandable section for creating products with integrated product form
This commit is contained in:
@@ -12,6 +12,7 @@ export class QuickImportService {
|
||||
*/
|
||||
async importFromInput(input: string): Promise<QuickImportResult> {
|
||||
input = input.trim();
|
||||
console.log('[QuickImport] Mottog input:', input);
|
||||
|
||||
if (!input) {
|
||||
throw new BadRequestException('Du måste ange en URL eller filsökväg');
|
||||
@@ -21,20 +22,26 @@ export class QuickImportService {
|
||||
const isUrl = this.isUrl(input);
|
||||
const isPdf = this.isPdfPath(input);
|
||||
|
||||
console.log('[QuickImport] isUrl:', isUrl, 'isPdf:', isPdf);
|
||||
|
||||
if (isUrl) {
|
||||
// Försök detektera webbplats
|
||||
if (input.includes('ica.se')) {
|
||||
console.log('[QuickImport] Detekterade ICA-länk, startar skrapning...');
|
||||
return this.scrapeIcaRecipe(input);
|
||||
} else {
|
||||
console.log('[QuickImport] URL är inte från ICA.se');
|
||||
throw new BadRequestException(
|
||||
'Endast ICA-recept stöds för närvarande. Försök med en ICA-länk (ica.se)'
|
||||
);
|
||||
}
|
||||
} else if (isPdf) {
|
||||
console.log('[QuickImport] PDF-fil identifierad');
|
||||
throw new BadRequestException(
|
||||
'PDF-import är under utveckling. Använd snabbimport för ICA-recept eller skriv in receptet manuellt.'
|
||||
);
|
||||
} else {
|
||||
console.log('[QuickImport] Input är inte URL eller PDF');
|
||||
throw new BadRequestException(
|
||||
'Ogültig input. Ange en gyltig URL (t.ex. ica.se/recept/...) eller filsökväg'
|
||||
);
|
||||
@@ -74,6 +81,8 @@ export class QuickImportService {
|
||||
*/
|
||||
private async scrapeIcaRecipe(url: string): Promise<QuickImportResult> {
|
||||
try {
|
||||
console.log('[QuickImport] Hämtar HTML från:', url);
|
||||
|
||||
// Hämta HTML från URL
|
||||
const response = await fetch(url, {
|
||||
headers: {
|
||||
@@ -82,14 +91,18 @@ export class QuickImportService {
|
||||
},
|
||||
});
|
||||
|
||||
console.log('[QuickImport] HTTP status:', response.status);
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
||||
}
|
||||
|
||||
const html = await response.text();
|
||||
console.log('[QuickImport] HTML längd:', html.length, 'tecken');
|
||||
|
||||
// Extrahera receptinformation från HTML
|
||||
const recipe = this.parseIcaHtml(html);
|
||||
console.log('[QuickImport] Parsad recept:', { name: recipe.name, ingredienser: recipe.ingredients.length });
|
||||
|
||||
if (!recipe.name) {
|
||||
throw new Error('Kunde inte hitta receptnamn på sidan. Försök med en annan länk.');
|
||||
@@ -97,6 +110,7 @@ export class QuickImportService {
|
||||
|
||||
// Konvertera till Markdown-format
|
||||
const markdown = this.recipeToMarkdown(recipe);
|
||||
console.log('[QuickImport] Markdown genererad, längd:', markdown.length);
|
||||
|
||||
return {
|
||||
markdown,
|
||||
@@ -104,6 +118,7 @@ export class QuickImportService {
|
||||
};
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : 'Okänt fel vid scraping';
|
||||
console.error('[QuickImport] ERROR:', message);
|
||||
throw new BadRequestException(
|
||||
`Kunde inte hämta recept från ICA: ${message}. Kontrollera att länken är korrekt och försök igen.`
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user