Fix onBackPressed / toolbar navigation behaviour in MediaGalleryFragment.

This commit is contained in:
Alex Hart 2021-09-07 15:45:31 -03:00 committed by Greyson Parrelli
parent 53e110560a
commit 6b5f4ca8c2
2 changed files with 10 additions and 6 deletions

View file

@ -44,6 +44,12 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
private val viewStateLiveData = MutableLiveData(ViewState()) private val viewStateLiveData = MutableLiveData(ViewState())
private val onBackPressedCallback: OnBackPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
onBack()
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
callbacks = requireNotNull(findListener()) callbacks = requireNotNull(findListener())
@ -86,6 +92,7 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
MediaGallerySelectableItem.registerAdapter( MediaGallerySelectableItem.registerAdapter(
mappingAdapter = galleryAdapter, mappingAdapter = galleryAdapter,
onMediaFolderClicked = { onMediaFolderClicked = {
onBackPressedCallback.isEnabled = true
viewModel.setMediaFolder(it) viewModel.setMediaFolder(it)
}, },
onMediaClicked = { media, selected -> onMediaClicked = { media, selected ->
@ -132,15 +139,12 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
galleryAdapter.submitList(it) galleryAdapter.submitList(it)
} }
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) { requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, onBackPressedCallback)
override fun handleOnBackPressed() {
onBack()
}
})
} }
fun onBack() { fun onBack() {
if (viewModel.pop()) { if (viewModel.pop()) {
onBackPressedCallback.isEnabled = false
callbacks.onToolbarNavigationClicked() callbacks.onToolbarNavigationClicked()
} }
} }

View file

@ -98,6 +98,6 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
} }
override fun onToolbarNavigationClicked() { override fun onToolbarNavigationClicked() {
Navigation.findNavController(requireView()).popBackStack() requireActivity().onBackPressed()
} }
} }