diff --git a/packages/smooth_app/lib/database/dao_product.dart b/packages/smooth_app/lib/database/dao_product.dart index 1ec6d600c59b..6ca6da863ecc 100644 --- a/packages/smooth_app/lib/database/dao_product.dart +++ b/packages/smooth_app/lib/database/dao_product.dart @@ -195,6 +195,7 @@ class DaoProduct extends AbstractSqlDao implements BulkDeletable { Future> getAllKeys() async { final List result = []; + final Set excluded = excludeBarcodes.toSet(); final List> queryResults = await localDatabase.database .query( _TABLE_PRODUCT, @@ -433,7 +434,7 @@ class DaoProduct extends AbstractSqlDao implements BulkDeletable { while (await queryCursor.moveNext()) { final String barcode = queryCursor.current[_TABLE_PRODUCT_COLUMN_BARCODE]! as String; - if (excludeBarcodes.contains(barcode)) { + if (excluded.contains(barcode)) { continue; } String? foundProductType = diff --git a/packages/smooth_app/lib/database/dao_product_list.dart b/packages/smooth_app/lib/database/dao_product_list.dart index e1a0cc1edbf1..8fe240c31cd6 100644 --- a/packages/smooth_app/lib/database/dao_product_list.dart +++ b/packages/smooth_app/lib/database/dao_product_list.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:convert'; +import 'dart:collection'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; @@ -235,28 +236,24 @@ class DaoProductList extends AbstractDao { final bool include = true, }) async { final _BarcodeList? list = await _get(productList); - final List allBarcodes; - + final LinkedHashSet allBarcodes; if (list == null) { - allBarcodes = []; + allBarcodes = LinkedHashSet(); } else { - allBarcodes = _getSafeBarcodeListCopy(list.barcodes); + allBarcodes = LinkedHashSet.from(list.barcodes); } for (final String barcode in barcodes) { - if (include) { - if (!allBarcodes.contains(barcode)) { - allBarcodes.add(barcode); - } - } else { - if (allBarcodes.contains(barcode)) { - allBarcodes.remove(barcode); - } - } + if (include) { + allBarcodes.add(barcode); + } else { + allBarcodes.remove(barcode); + } + } } - final _BarcodeList newList = _BarcodeList.now(allBarcodes); - await _put(getKey(productList), newList); + final _BarcodeList newList = + _BarcodeList.now(allBarcodes.toList()); } Future rename(