refactor(receipt-import): update CategoryLookup initialization and improve imports
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -58,14 +58,14 @@ class AdminRepository {
|
|||||||
Future<T> _patch<T>(
|
Future<T> _patch<T>(
|
||||||
String path, {
|
String path, {
|
||||||
required Map<String, dynamic> body,
|
required Map<String, dynamic> body,
|
||||||
required T Function(dynamic) parse,
|
required T Function(Map<String, dynamic>) parse,
|
||||||
}) async {
|
}) async {
|
||||||
final token = await _token();
|
final token = await _token();
|
||||||
final data = await guardedApiCall(
|
final data = await guardedApiCall(
|
||||||
_ref,
|
_ref,
|
||||||
() => _apiClient.patchJson(path, body: body, token: token),
|
() => _apiClient.patchJson(path, body: body, token: token),
|
||||||
);
|
);
|
||||||
return parse(data);
|
return parse(Map<String, dynamic>.from(data as Map));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fire-and-forget PATCH.
|
/// Fire-and-forget PATCH.
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import '../../pantry/domain/pantry_item.dart';
|
|||||||
import '../data/import_providers.dart';
|
import '../data/import_providers.dart';
|
||||||
import '../data/receipt_import_session.dart';
|
import '../data/receipt_import_session.dart';
|
||||||
import '../domain/parsed_receipt_item.dart';
|
import '../domain/parsed_receipt_item.dart';
|
||||||
|
import '../../../core/ui/product_picker_field.dart';
|
||||||
import '../utils/receipt_import_utils.dart';
|
import '../utils/receipt_import_utils.dart';
|
||||||
import 'edit_dialog.dart';
|
import 'edit_dialog.dart';
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ class _ReceiptImportTabState extends ConsumerState<ReceiptImportTab> {
|
|||||||
|
|
||||||
// Kategoriträdet för tvåstegs-picker
|
// Kategoriträdet för tvåstegs-picker
|
||||||
List<AdminCategoryNode> _categoryTree = [];
|
List<AdminCategoryNode> _categoryTree = [];
|
||||||
CategoryLookup _lookup = CategoryLookup([]);
|
CategoryLookup _lookup = CategoryLookup.fromTree([]);
|
||||||
|
|
||||||
// Befintligt inventarie: productId → InventoryItem (för sammanslagning)
|
// Befintligt inventarie: productId → InventoryItem (för sammanslagning)
|
||||||
Map<int, InventoryItem> _inventoryByProduct = {};
|
Map<int, InventoryItem> _inventoryByProduct = {};
|
||||||
@@ -113,7 +114,7 @@ class _ReceiptImportTabState extends ConsumerState<ReceiptImportTab> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
_products = dedupedById.values.toList();
|
_products = dedupedById.values.toList();
|
||||||
_categoryTree = categoryTree;
|
_categoryTree = categoryTree;
|
||||||
_lookup = CategoryLookup(categoryTree);
|
_lookup = CategoryLookup.fromTree(categoryTree);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e, st) {
|
} catch (e, st) {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
/// Separerade från UI-lagret för att möjliggöra testning och återanvändning.
|
/// Separerade från UI-lagret för att möjliggöra testning och återanvändning.
|
||||||
library;
|
library;
|
||||||
|
|
||||||
|
import '../../admin/domain/admin_category_node.dart';
|
||||||
|
|
||||||
// ── Enhetskonvertering ────────────────────────────────────────────────────────
|
// ── Enhetskonvertering ────────────────────────────────────────────────────────
|
||||||
|
|
||||||
// Alla massvärden normaliseras till gram (g).
|
// Alla massvärden normaliseras till gram (g).
|
||||||
@@ -165,8 +167,6 @@ String normalizeProductName(String raw) {
|
|||||||
|
|
||||||
// ── Kategoriträd-lookup ───────────────────────────────────────────────────────
|
// ── Kategoriträd-lookup ───────────────────────────────────────────────────────
|
||||||
|
|
||||||
import '../../../features/admin/domain/admin_category_node.dart';
|
|
||||||
|
|
||||||
/// Hjälpklass för snabb lookup av kategori-sökväg via index.
|
/// 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.
|
/// Bygg en gång från trädet och återanvänd för alla rader.
|
||||||
|
|||||||
Reference in New Issue
Block a user