Skip to content

Commit

Permalink
fix: NPE in ProductEditActivity#getUpdatedFieldsMap
Browse files Browse the repository at this point in the history
Closes OPENFOODFACTS-ANDROID-4WY
  • Loading branch information
VaiTon committed Feb 26, 2022
1 parent 41fa689 commit 0ff12f6
Showing 1 changed file with 17 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,11 @@ class ProductEditActivity : BaseActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
if (getUpdatedFieldsMap().isNotEmpty()) {
if (getUpdatedFieldsMap().isEmpty()) false
else {
showExitConfirmDialog()
true
} else false
}
}
R.id.save_product -> {
checkFieldsThenSave()
Expand Down Expand Up @@ -290,10 +291,15 @@ class ProductEditActivity : BaseActivity() {
}

private fun getUpdatedFieldsMap(): Map<String, String?> {
val updatedValues = editOverviewFragment.getUpdatedFieldsMap().toMutableMap()
updatedValues += ingredientsFragment.getUpdatedFieldsMap()
val updatedValues = mutableMapOf<String, String?>()

if (editOverviewFragment.isAdded)
updatedValues += editOverviewFragment.getUpdatedFieldsMap().toMutableMap()

if (ingredientsFragment.isAdded)
updatedValues += ingredientsFragment.getUpdatedFieldsMap()

if (isFlavors(OFF, OPFF))
if (isFlavors(OFF, OPFF) && nutritionFactsFragment.isAdded)
updatedValues += nutritionFactsFragment.getUpdatedFieldsMap()

return updatedValues
Expand Down Expand Up @@ -324,7 +330,6 @@ class ProductEditActivity : BaseActivity() {
}
val barcode = productDetails[ApiFields.Keys.BARCODE]!!


// Save product to local database
val toSaveOffline = OfflineSavedProduct(barcode, productDetails)
withContext(IO) { daoSession.offlineSavedProductDao.insertOrReplace(toSaveOffline) }
Expand All @@ -339,9 +344,9 @@ class ProductEditActivity : BaseActivity() {

// Report analytics
if (editingMode) {
matomoAnalytics.trackEvent(AnalyticsEvent.ProductEdited(productDetails[ApiFields.Keys.BARCODE]))
matomoAnalytics.trackEvent(AnalyticsEvent.ProductEdited(barcode))
} else {
matomoAnalytics.trackEvent(AnalyticsEvent.ProductCreated(productDetails[ApiFields.Keys.BARCODE]))
matomoAnalytics.trackEvent(AnalyticsEvent.ProductCreated(barcode))
}

setResult(RESULT_OK)
Expand Down Expand Up @@ -614,19 +619,19 @@ class ProductEditActivity : BaseActivity() {
ingredientsFragment.setIngredients(status, ingredients)

class PerformOCRContract : ActivityResultContract<Product?, Boolean>() {
override fun createIntent(context: Context, product: Product?) =
override fun createIntent(context: Context, input: Product?) =
Intent(context, ProductEditActivity::class.java).apply {
putExtra(KEY_EDIT_PRODUCT, product)
putExtra(KEY_EDIT_PRODUCT, input)
putExtra(KEY_PERFORM_OCR, true)
}

override fun parseResult(resultCode: Int, intent: Intent?) = resultCode == RESULT_OK
}

class SendUpdatedImgContract : ActivityResultContract<Product, Boolean>() {
override fun createIntent(context: Context, product: Product) =
override fun createIntent(context: Context, input: Product) =
Intent(context, ProductEditActivity::class.java).apply {
putExtra(KEY_EDIT_PRODUCT, product)
putExtra(KEY_EDIT_PRODUCT, input)
putExtra(KEY_SEND_UPDATED, true)
}

Expand Down

0 comments on commit 0ff12f6

Please sign in to comment.