Fix navigation from camera crash.

fork-5.53.8
Cody Henthorne 2021-12-20 15:38:33 -05:00 zatwierdzone przez Alex Hart
rodzic 92df5b9564
commit bbadda5656
4 zmienionych plików z 26 dodań i 22 usunięć

Wyświetl plik

@ -1,10 +1,9 @@
package org.thoughtcrime.securesms.mediasend.v2 package org.thoughtcrime.securesms.mediasend.v2
import android.Manifest import android.Manifest
import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.Navigation import androidx.navigation.NavController
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.permissions.Permissions import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.util.navigation.safeNavigate import org.thoughtcrime.securesms.util.navigation.safeNavigate
@ -13,20 +12,20 @@ class MediaSelectionNavigator(
private val toCamera: Int = -1, private val toCamera: Int = -1,
private val toGallery: Int = -1 private val toGallery: Int = -1
) { ) {
fun goToReview(view: View) { fun goToReview(navController: NavController) {
Navigation.findNavController(view).popBackStack(R.id.mediaReviewFragment, false) navController.popBackStack(R.id.mediaReviewFragment, false)
} }
fun goToCamera(view: View) { fun goToCamera(navController: NavController) {
if (toCamera == -1) return if (toCamera == -1) return
Navigation.findNavController(view).safeNavigate(toCamera) navController.safeNavigate(toCamera)
} }
fun goToGallery(view: View) { fun goToGallery(navController: NavController) {
if (toGallery == -1) return if (toGallery == -1) return
Navigation.findNavController(view).safeNavigate(toGallery) navController.safeNavigate(toGallery)
} }
companion object { companion object {

Wyświetl plik

@ -8,6 +8,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.navigation.fragment.findNavController
import app.cash.exhaustive.Exhaustive import app.cash.exhaustive.Exhaustive
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
@ -59,15 +60,13 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
Toast.makeText(requireContext(), R.string.MediaSendActivity_camera_unavailable, Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), R.string.MediaSendActivity_camera_unavailable, Toast.LENGTH_SHORT).show()
} }
is MediaCaptureEvent.MediaCaptureRendered -> { is MediaCaptureEvent.MediaCaptureRendered -> {
captureChildFragment.fadeOutControls {
if (isFirst()) { if (isFirst()) {
sharedViewModel.addCameraFirstCapture(event.media) sharedViewModel.addCameraFirstCapture(event.media)
} else { } else {
sharedViewModel.addMedia(event.media) sharedViewModel.addMedia(event.media)
} }
navigator.goToReview(view) navigator.goToReview(findNavController())
}
} }
} }
} }
@ -122,9 +121,10 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
} }
override fun onGalleryClicked() { override fun onGalleryClicked() {
val controller = findNavController()
requestPermissionsForGallery { requestPermissionsForGallery {
captureChildFragment.fadeOutControls { captureChildFragment.fadeOutControls {
navigator.goToGallery(requireView()) navigator.goToGallery(controller)
} }
} }
} }
@ -139,8 +139,9 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
} }
override fun onCameraCountButtonClicked() { override fun onCameraCountButtonClicked() {
val controller = findNavController()
captureChildFragment.fadeOutControls { captureChildFragment.fadeOutControls {
navigator.goToReview(requireView()) navigator.goToReview(controller)
} }
} }

Wyświetl plik

@ -6,6 +6,7 @@ import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import app.cash.exhaustive.Exhaustive import app.cash.exhaustive.Exhaustive
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
@ -100,17 +101,18 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
override fun onSelectedMediaClicked(media: Media) { override fun onSelectedMediaClicked(media: Media) {
sharedViewModel.setFocusedMedia(media) sharedViewModel.setFocusedMedia(media)
navigator.goToReview(requireView()) navigator.goToReview(findNavController())
} }
override fun onNavigateToCamera() { override fun onNavigateToCamera() {
val controller = findNavController()
requestPermissionsForCamera { requestPermissionsForCamera {
navigator.goToCamera(requireView()) navigator.goToCamera(controller)
} }
} }
override fun onSubmit() { override fun onSubmit() {
navigator.goToReview(requireView()) navigator.goToReview(findNavController())
} }
override fun onToolbarNavigationClicked() { override fun onToolbarNavigationClicked() {

Wyświetl plik

@ -16,6 +16,7 @@ import androidx.core.graphics.drawable.DrawableCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.setFragmentResultListener import androidx.fragment.app.setFragmentResultListener
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
@ -241,8 +242,9 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) {
} }
private fun launchGallery() { private fun launchGallery() {
val controller = findNavController()
requestPermissionsForGallery { requestPermissionsForGallery {
navigator.goToGallery(requireView()) navigator.goToGallery(controller)
} }
} }