Fix: Fix crash when adding location after removing a picture (#6175)

* Fix: Resolved the Crash in UploadMediaDetailFragment

* Fix uninitialized basicKvStoreFactory in UploadMediaPresenter

---------

Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
This commit is contained in:
Sonal Yadav 2025-02-07 19:40:18 +05:30 committed by Nicolas Raoul
parent 67a8d0962c
commit 37d31c27aa
2 changed files with 13 additions and 9 deletions

View file

@ -15,6 +15,7 @@ import android.widget.CompoundButton
import android.widget.ImageView
import android.widget.Toast
import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf
@ -60,8 +61,7 @@ import javax.inject.Named
class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContract.View,
UploadMediaDetailAdapter.EventListener {
private val startForResult = registerForActivityResult<Intent, ActivityResult>(
ActivityResultContracts.StartActivityForResult(), ::onCameraPosition)
private lateinit var startForResult: ActivityResultLauncher<Intent>
private val startForEditActivityResult = registerForActivityResult<Intent, ActivityResult>(
ActivityResultContracts.StartActivityForResult(), ::onEditActivityResult)
@ -135,6 +135,10 @@ class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContra
if (savedInstanceState != null && uploadableFile == null) {
uploadableFile = savedInstanceState.getParcelable(UPLOADABLE_FILE)
}
// Register the ActivityResultLauncher for LocationPickerActivity
startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
onCameraPosition(result)
}
}
fun setImageToBeUploaded(

View file

@ -51,7 +51,7 @@ class UploadMediaPresenter @Inject constructor(
}
}
}
lateinit var basicKvStoreFactory: (String) -> BasicKvStore
private var basicKvStoreFactory: ((String) -> BasicKvStore)? = null
override fun onAttachView(view: UploadMediaDetailsContract.View) {
this.view = view
@ -339,8 +339,8 @@ class UploadMediaPresenter @Inject constructor(
*/
override fun checkImageQuality(uploadItem: UploadItem, index: Int) {
if ((uploadItem.imageQuality != IMAGE_OK) && (uploadItem.imageQuality != IMAGE_KEEP)) {
val value = basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize)
.getString(UPLOAD_QUALITIES_KEY, null)
val value = basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
?.getString(UPLOAD_QUALITIES_KEY, null)
try {
val imageQuality = value.asJsonObject()["UploadItem$index"] as Int
view.showProgress(false)
@ -363,8 +363,8 @@ class UploadMediaPresenter @Inject constructor(
* @param index Index of the UploadItem which was deleted
*/
override fun updateImageQualitiesJSON(size: Int, index: Int) {
val value = basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize)
.getString(UPLOAD_QUALITIES_KEY, null)
val value = basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
?.getString(UPLOAD_QUALITIES_KEY, null)
try {
val jsonObject = value.asJsonObject().apply {
for (i in index until (size - 1)) {
@ -372,8 +372,8 @@ class UploadMediaPresenter @Inject constructor(
}
remove("UploadItem" + (size - 1))
}
basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize)
.putString(UPLOAD_QUALITIES_KEY, jsonObject.toString())
basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
?.putString(UPLOAD_QUALITIES_KEY, jsonObject.toString())
} catch (e: Exception) {
Timber.e(e)
}