Handle the case where selectedImages is null

This commit is contained in:
sonalyadav 2024-12-19 19:20:41 +05:30 committed by Sonal Yadav
parent ad34160105
commit 6b7d484768

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons.customselector.ui.selector package fr.free.nrw.commons.customselector.ui.selector
import timber.log.Timber
import android.Manifest import android.Manifest
import android.app.Activity import android.app.Activity
import android.app.Dialog import android.app.Dialog
@ -158,11 +160,9 @@ class CustomSelectorActivity :
/** /**
* Waits for confirmation of delete folder * Waits for confirmation of delete folder
*/ */
private val startForFolderDeletionResult = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()){ private val startForFolderDeletionResult = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result -> onDeleteFolderResultReceived(result) }
result -> onDeleteFolderResultReceived(result)
}
private val startForResult = registerForActivityResult(StartActivityForResult()){ result -> private val startForResult = registerForActivityResult(StartActivityForResult()) { result ->
onFullScreenDataReceived(result) onFullScreenDataReceived(result)
} }
@ -193,9 +193,9 @@ class CustomSelectorActivity :
} }
}, },
modifier = modifier =
Modifier Modifier
.padding(vertical = 8.dp, horizontal = 4.dp) .padding(vertical = 8.dp, horizontal = 4.dp)
.fillMaxWidth(), .fillMaxWidth(),
) )
} }
val view = binding.root val view = binding.root
@ -245,24 +245,27 @@ class CustomSelectorActivity :
/** /**
* When data will be send from full screen mode, it will be passed to fragment * When data will be send from full screen mode, it will be passed to fragment
*/ */
private fun onFullScreenDataReceived(result: ActivityResult){ private fun onFullScreenDataReceived(result: ActivityResult) {
if (result.resultCode == Activity.RESULT_OK) { if (result.resultCode == Activity.RESULT_OK) {
val selectedImages: ArrayList<Image> = result.data?.getParcelableArrayListExtra<Image>(CustomSelectorConstants.NEW_SELECTED_IMAGES)
result.data!! ?.let { selectedImages ->
.getParcelableArrayListExtra(CustomSelectorConstants.NEW_SELECTED_IMAGES)!! // Check if viewModel is not null before updating selectedImages
viewModel?.selectedImages?.value = selectedImages viewModel?.selectedImages?.value = selectedImages
} ?: run {
// Handle the case where selectedImages is null
Timber.e("No images selected or data is null")
}
} }
} }
private fun onDeleteFolderResultReceived(result: ActivityResult){ private fun onDeleteFolderResultReceived(result: ActivityResult) {
if (result.resultCode == Activity.RESULT_OK){ if (result.resultCode == Activity.RESULT_OK) {
FolderDeletionHelper.showSuccess(this, "Folder deleted successfully", bucketName) FolderDeletionHelper.showSuccess(this, "Folder deleted successfully", bucketName)
navigateToCustomSelector() navigateToCustomSelector()
} }
} }
/** /**
* Show Custom Selector Welcome Dialog. * Show Custom Selector Welcome Dialog.
*/ */
@ -423,10 +426,11 @@ class CustomSelectorActivity :
var titleWithAppendedImageCount = title var titleWithAppendedImageCount = title
if (selectedImageCount > 0) { if (selectedImageCount > 0) {
titleWithAppendedImageCount += " (${resources.getQuantityString( titleWithAppendedImageCount += " (${resources.getQuantityString(
R.plurals.custom_picker_images_selected_title_appendix, R.plurals.custom_picker_images_selected_title_appendix,
selectedImageCount, selectedImageCount,
selectedImageCount, selectedImageCount,
)})" )
})"
} }
if (titleText != null) { if (titleText != null) {
titleText.text = titleWithAppendedImageCount titleText.text = titleWithAppendedImageCount
@ -482,7 +486,7 @@ class CustomSelectorActivity :
val folder = File(folderPath) val folder = File(folderPath)
if (!folder.exists() || !folder.isDirectory) { if (!folder.exists() || !folder.isDirectory) {
FolderDeletionHelper.showError(this,"Folder not found or is not a directory", bucketName) FolderDeletionHelper.showError(this, "Folder not found or is not a directory", bucketName)
return return
} }
@ -500,7 +504,6 @@ class CustomSelectorActivity :
} }
/** /**
* Navigates back to the main `FolderFragment`, refreshes the MediaStore, resets UI states, * Navigates back to the main `FolderFragment`, refreshes the MediaStore, resets UI states,
* and reloads folder data. * and reloads folder data.
@ -511,7 +514,7 @@ class CustomSelectorActivity :
val folder = File(folderPath) val folder = File(folderPath)
supportFragmentManager.popBackStack(null, supportFragmentManager.popBackStack(null,
androidx.fragment.app.FragmentManager.POP_BACK_STACK_INCLUSIVE) androidx.fragment.app.FragmentManager.POP_BACK_STACK_INCLUSIVE)
//refresh MediaStore for the deleted folder path to ensure metadata updates //refresh MediaStore for the deleted folder path to ensure metadata updates
FolderDeletionHelper.refreshMediaStore(this, folder) FolderDeletionHelper.refreshMediaStore(this, folder)
@ -733,9 +736,9 @@ fun partialStorageAccessIndicator(
OutlinedCard( OutlinedCard(
modifier = modifier, modifier = modifier,
colors = colors =
CardDefaults.cardColors( CardDefaults.cardColors(
containerColor = colorResource(R.color.primarySuperLightColor), containerColor = colorResource(R.color.primarySuperLightColor),
), ),
border = BorderStroke(0.5.dp, color = colorResource(R.color.primaryColor)), border = BorderStroke(0.5.dp, color = colorResource(R.color.primaryColor)),
shape = RoundedCornerShape(8.dp), shape = RoundedCornerShape(8.dp),
) { ) {
@ -748,9 +751,9 @@ fun partialStorageAccessIndicator(
onClick = onManage, onClick = onManage,
modifier = Modifier.align(Alignment.Bottom), modifier = Modifier.align(Alignment.Bottom),
colors = colors =
ButtonDefaults.buttonColors( ButtonDefaults.buttonColors(
containerColor = colorResource(R.color.primaryColor), containerColor = colorResource(R.color.primaryColor),
), ),
shape = RoundedCornerShape(8.dp), shape = RoundedCornerShape(8.dp),
) { ) {
Text( Text(
@ -772,9 +775,9 @@ fun partialStorageAccessIndicatorPreview() {
isVisible = true, isVisible = true,
onManage = {}, onManage = {},
modifier = modifier =
Modifier Modifier
.padding(vertical = 8.dp, horizontal = 4.dp) .padding(vertical = 8.dp, horizontal = 4.dp)
.fillMaxWidth(), .fillMaxWidth(),
) )
} }
} }