mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-27 14:40:22 +00:00
Prevent showing Empty MediaPreview screen and avoid Camera/Gallery Stack.
This commit is contained in:
@@ -29,6 +29,10 @@ class MediaSelectionNavigator(
|
||||
navController.safeNavigate(toGallery)
|
||||
}
|
||||
|
||||
fun isPreviousScreenMediaReview(navController: NavController): Boolean {
|
||||
return navController.previousBackStackEntry?.destination?.id == R.id.mediaReviewFragment
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun Fragment.requestPermissionsForCamera(
|
||||
onGranted: () -> Unit
|
||||
|
||||
@@ -264,6 +264,10 @@ class MediaSelectionViewModel(
|
||||
lastMediaDrag = Pair(0, 0)
|
||||
}
|
||||
|
||||
fun isSelectedMediaEmpty(): Boolean {
|
||||
return store.state.selectedMedia.isEmpty()
|
||||
}
|
||||
|
||||
fun removeMedia(media: Media) {
|
||||
val snapshot = store.state
|
||||
val newMediaList = snapshot.selectedMedia - media
|
||||
|
||||
@@ -119,7 +119,7 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
|
||||
}
|
||||
}
|
||||
|
||||
if (isFirst()) {
|
||||
if (isFirst() || sharedViewModel.isSelectedMediaEmpty()) {
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
|
||||
@@ -53,16 +53,14 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
|
||||
mediaGalleryFragment.onViewStateUpdated(MediaGalleryFragment.ViewState(state.selectedMedia))
|
||||
}
|
||||
|
||||
if (arguments?.containsKey("first") == true) {
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
requireActivity().finish()
|
||||
}
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
onBackPressed()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
||||
lifecycleDisposable += sharedViewModel.mediaErrors
|
||||
@@ -139,6 +137,19 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
|
||||
}
|
||||
|
||||
override fun onToolbarNavigationClicked() {
|
||||
requireActivity().onBackPressed()
|
||||
onBackPressed()
|
||||
}
|
||||
|
||||
fun onBackPressed() {
|
||||
if (arguments?.containsKey("first") == true) {
|
||||
requireActivity().finish()
|
||||
return
|
||||
}
|
||||
|
||||
if (navigator.isPreviousScreenMediaReview(findNavController()) && sharedViewModel.isSelectedMediaEmpty()) {
|
||||
requireActivity().finish()
|
||||
} else {
|
||||
findNavController().popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user