diff --git a/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/scan/ContinuousScanActivity.kt b/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/scan/ContinuousScanActivity.kt index e6a70c332f9c..75c1a4c2ca65 100644 --- a/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/scan/ContinuousScanActivity.kt +++ b/app/src/main/java/openfoodfacts/github/scrachx/openfood/features/scan/ContinuousScanActivity.kt @@ -244,22 +244,26 @@ class ContinuousScanActivity : BaseActivity() { binding.quickViewTags.adapter = null binding.quickViewProgress.visibility = View.GONE binding.quickViewProgressText.visibility = View.GONE + if (productState.status == 0L) { tryDisplayOffline(offlineSavedProduct, barcode, R.string.product_not_found) } else { val product = productState.product!! this.product = product + // Add product to scan history + productDisp = client.addToHistory(product).subscribeOn(Schedulers.io()).subscribe() + // If we're here from comparison -> add product, return to comparison activity if (intent.getBooleanExtra(ProductCompareActivity.KEY_COMPARE_PRODUCT, false)) { startActivity(Intent(this@ContinuousScanActivity, ProductCompareActivity::class.java).apply { putExtra(ProductCompareActivity.KEY_PRODUCT_FOUND, true) val productsToCompare = intent.extras!!.getSerializable(ProductCompareActivity.KEY_PRODUCTS_TO_COMPARE) as ArrayList - if (productsToCompare.contains(product)) { + if (product in productsToCompare) { putExtra(ProductCompareActivity.KEY_PRODUCT_ALREADY_EXISTS, true) } else { - productsToCompare.add(product) + productsToCompare += product matomoAnalytics.trackEvent(AnalyticsEvent.AddProductToComparison(product.code)) } putExtra(ProductCompareActivity.KEY_PRODUCTS_TO_COMPARE, productsToCompare) @@ -267,8 +271,6 @@ class ContinuousScanActivity : BaseActivity() { }) } - // Add product to scan history - productDisp = client.addToHistory(product).subscribeOn(Schedulers.io()).subscribe() showAllViews() binding.txtProductCallToAction.let { it.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0) diff --git a/app/src/main/java/openfoodfacts/github/scrachx/openfood/network/OpenFoodAPIClient.kt b/app/src/main/java/openfoodfacts/github/scrachx/openfood/network/OpenFoodAPIClient.kt index 0488d0be95a4..229b1f23303c 100644 --- a/app/src/main/java/openfoodfacts/github/scrachx/openfood/network/OpenFoodAPIClient.kt +++ b/app/src/main/java/openfoodfacts/github/scrachx/openfood/network/OpenFoodAPIClient.kt @@ -441,17 +441,17 @@ class OpenFoodAPIClient @Inject constructor( * Add a product to ScanHistory synchronously */ fun HistoryProductDao.addToHistorySync(product: Product, language: String) { - val historyProducts = queryBuilder() - .where(HistoryProductDao.Properties.Barcode.eq(product.code)) - .uniqueOrThrow() + val historyProducts: HistoryProduct? = queryBuilder() + .where(HistoryProductDao.Properties.Barcode.eq(product.code)) + .unique() val hp = HistoryProduct( - product.productName, - product.brands, - product.getImageSmallUrl(language), - product.code, - product.quantity, - product.nutritionGradeFr, - product.ecoscore, + product.productName, + product.brands, + product.getImageSmallUrl(language), + product.code, + product.quantity, + product.nutritionGradeFr, + product.ecoscore, product.novaGroups ) if (historyProducts != null) hp.id = historyProducts.id