diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.kt b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.kt index 92a46b92a..af850a7e3 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.kt @@ -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( - ActivityResultContracts.StartActivityForResult(), ::onCameraPosition) + private lateinit var startForResult: ActivityResultLauncher private val startForEditActivityResult = registerForActivityResult( 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( diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt index 55cead370..90c426091 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt @@ -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) }