mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-29 22:03:55 +01:00
Handle the case where selectedImages is null
This commit is contained in:
parent
ad34160105
commit
6b7d484768
1 changed files with 34 additions and 31 deletions
|
|
@ -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(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue