From 046dad870f04242b7e1840ec0e655741689c6610 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Sun, 3 May 2026 15:29:58 +0200 Subject: [PATCH] refactor(receipt-import): update CategoryLookup initialization and improve imports Co-authored-by: Copilot --- flutter/lib/features/admin/data/admin_repository.dart | 4 ++-- .../lib/features/import/presentation/receipt_import_tab.dart | 5 +++-- flutter/lib/features/import/utils/receipt_import_utils.dart | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/flutter/lib/features/admin/data/admin_repository.dart b/flutter/lib/features/admin/data/admin_repository.dart index 24318024..78c86bed 100644 --- a/flutter/lib/features/admin/data/admin_repository.dart +++ b/flutter/lib/features/admin/data/admin_repository.dart @@ -58,14 +58,14 @@ class AdminRepository { Future _patch( String path, { required Map body, - required T Function(dynamic) parse, + required T Function(Map) parse, }) async { final token = await _token(); final data = await guardedApiCall( _ref, () => _apiClient.patchJson(path, body: body, token: token), ); - return parse(data); + return parse(Map.from(data as Map)); } /// Fire-and-forget PATCH. diff --git a/flutter/lib/features/import/presentation/receipt_import_tab.dart b/flutter/lib/features/import/presentation/receipt_import_tab.dart index 7ac945cf..649a7723 100644 --- a/flutter/lib/features/import/presentation/receipt_import_tab.dart +++ b/flutter/lib/features/import/presentation/receipt_import_tab.dart @@ -15,6 +15,7 @@ import '../../pantry/domain/pantry_item.dart'; import '../data/import_providers.dart'; import '../data/receipt_import_session.dart'; import '../domain/parsed_receipt_item.dart'; +import '../../../core/ui/product_picker_field.dart'; import '../utils/receipt_import_utils.dart'; import 'edit_dialog.dart'; @@ -49,7 +50,7 @@ class _ReceiptImportTabState extends ConsumerState { // Kategoriträdet för tvåstegs-picker List _categoryTree = []; - CategoryLookup _lookup = CategoryLookup([]); + CategoryLookup _lookup = CategoryLookup.fromTree([]); // Befintligt inventarie: productId → InventoryItem (för sammanslagning) Map _inventoryByProduct = {}; @@ -113,7 +114,7 @@ class _ReceiptImportTabState extends ConsumerState { setState(() { _products = dedupedById.values.toList(); _categoryTree = categoryTree; - _lookup = CategoryLookup(categoryTree); + _lookup = CategoryLookup.fromTree(categoryTree); }); } } catch (e, st) { diff --git a/flutter/lib/features/import/utils/receipt_import_utils.dart b/flutter/lib/features/import/utils/receipt_import_utils.dart index 58d94588..76313593 100644 --- a/flutter/lib/features/import/utils/receipt_import_utils.dart +++ b/flutter/lib/features/import/utils/receipt_import_utils.dart @@ -3,6 +3,8 @@ /// Separerade från UI-lagret för att möjliggöra testning och återanvändning. library; +import '../../admin/domain/admin_category_node.dart'; + // ── Enhetskonvertering ──────────────────────────────────────────────────────── // Alla massvärden normaliseras till gram (g). @@ -165,8 +167,6 @@ String normalizeProductName(String raw) { // ── Kategoriträd-lookup ─────────────────────────────────────────────────────── -import '../../../features/admin/domain/admin_category_node.dart'; - /// Hjälpklass för snabb lookup av kategori-sökväg via index. /// /// Bygg en gång från trädet och återanvänd för alla rader.