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 GitHub
parent 12cadd0186
commit e9e2697369
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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.ImageView
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
@ -60,8 +61,7 @@ import javax.inject.Named
class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContract.View, class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContract.View,
UploadMediaDetailAdapter.EventListener { UploadMediaDetailAdapter.EventListener {
private val startForResult = registerForActivityResult<Intent, ActivityResult>( private lateinit var startForResult: ActivityResultLauncher<Intent>
ActivityResultContracts.StartActivityForResult(), ::onCameraPosition)
private val startForEditActivityResult = registerForActivityResult<Intent, ActivityResult>( private val startForEditActivityResult = registerForActivityResult<Intent, ActivityResult>(
ActivityResultContracts.StartActivityForResult(), ::onEditActivityResult) ActivityResultContracts.StartActivityForResult(), ::onEditActivityResult)
@ -135,6 +135,10 @@ class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContra
if (savedInstanceState != null && uploadableFile == null) { if (savedInstanceState != null && uploadableFile == null) {
uploadableFile = savedInstanceState.getParcelable(UPLOADABLE_FILE) uploadableFile = savedInstanceState.getParcelable(UPLOADABLE_FILE)
} }
// Register the ActivityResultLauncher for LocationPickerActivity
startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
onCameraPosition(result)
}
} }
fun setImageToBeUploaded( 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) { override fun onAttachView(view: UploadMediaDetailsContract.View) {
this.view = view this.view = view
@ -339,8 +339,8 @@ class UploadMediaPresenter @Inject constructor(
*/ */
override fun checkImageQuality(uploadItem: UploadItem, index: Int) { override fun checkImageQuality(uploadItem: UploadItem, index: Int) {
if ((uploadItem.imageQuality != IMAGE_OK) && (uploadItem.imageQuality != IMAGE_KEEP)) { if ((uploadItem.imageQuality != IMAGE_OK) && (uploadItem.imageQuality != IMAGE_KEEP)) {
val value = basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize) val value = basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
.getString(UPLOAD_QUALITIES_KEY, null) ?.getString(UPLOAD_QUALITIES_KEY, null)
try { try {
val imageQuality = value.asJsonObject()["UploadItem$index"] as Int val imageQuality = value.asJsonObject()["UploadItem$index"] as Int
view.showProgress(false) view.showProgress(false)
@ -363,8 +363,8 @@ class UploadMediaPresenter @Inject constructor(
* @param index Index of the UploadItem which was deleted * @param index Index of the UploadItem which was deleted
*/ */
override fun updateImageQualitiesJSON(size: Int, index: Int) { override fun updateImageQualitiesJSON(size: Int, index: Int) {
val value = basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize) val value = basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
.getString(UPLOAD_QUALITIES_KEY, null) ?.getString(UPLOAD_QUALITIES_KEY, null)
try { try {
val jsonObject = value.asJsonObject().apply { val jsonObject = value.asJsonObject().apply {
for (i in index until (size - 1)) { for (i in index until (size - 1)) {
@ -372,8 +372,8 @@ class UploadMediaPresenter @Inject constructor(
} }
remove("UploadItem" + (size - 1)) remove("UploadItem" + (size - 1))
} }
basicKvStoreFactory(UploadActivity.storeNameForCurrentUploadImagesSize) basicKvStoreFactory?.let { it(UploadActivity.storeNameForCurrentUploadImagesSize) }
.putString(UPLOAD_QUALITIES_KEY, jsonObject.toString()) ?.putString(UPLOAD_QUALITIES_KEY, jsonObject.toString())
} catch (e: Exception) { } catch (e: Exception) {
Timber.e(e) Timber.e(e)
} }