mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-24 03:35:58 +00:00
Fix navigation from camera crash.
This commit is contained in:
committed by
Alex Hart
parent
92df5b9564
commit
bbadda5656
@@ -1,10 +1,9 @@
|
||||
package org.thoughtcrime.securesms.mediasend.v2
|
||||
|
||||
import android.Manifest
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.Navigation
|
||||
import androidx.navigation.NavController
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.permissions.Permissions
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
@@ -13,20 +12,20 @@ class MediaSelectionNavigator(
|
||||
private val toCamera: Int = -1,
|
||||
private val toGallery: Int = -1
|
||||
) {
|
||||
fun goToReview(view: View) {
|
||||
Navigation.findNavController(view).popBackStack(R.id.mediaReviewFragment, false)
|
||||
fun goToReview(navController: NavController) {
|
||||
navController.popBackStack(R.id.mediaReviewFragment, false)
|
||||
}
|
||||
|
||||
fun goToCamera(view: View) {
|
||||
fun goToCamera(navController: NavController) {
|
||||
if (toCamera == -1) return
|
||||
|
||||
Navigation.findNavController(view).safeNavigate(toCamera)
|
||||
navController.safeNavigate(toCamera)
|
||||
}
|
||||
|
||||
fun goToGallery(view: View) {
|
||||
fun goToGallery(navController: NavController) {
|
||||
if (toGallery == -1) return
|
||||
|
||||
Navigation.findNavController(view).safeNavigate(toGallery)
|
||||
navController.safeNavigate(toGallery)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -8,6 +8,7 @@ import androidx.activity.OnBackPressedCallback
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import app.cash.exhaustive.Exhaustive
|
||||
import org.signal.core.util.logging.Log
|
||||
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()
|
||||
}
|
||||
is MediaCaptureEvent.MediaCaptureRendered -> {
|
||||
captureChildFragment.fadeOutControls {
|
||||
if (isFirst()) {
|
||||
sharedViewModel.addCameraFirstCapture(event.media)
|
||||
} else {
|
||||
sharedViewModel.addMedia(event.media)
|
||||
}
|
||||
|
||||
navigator.goToReview(view)
|
||||
if (isFirst()) {
|
||||
sharedViewModel.addCameraFirstCapture(event.media)
|
||||
} else {
|
||||
sharedViewModel.addMedia(event.media)
|
||||
}
|
||||
|
||||
navigator.goToReview(findNavController())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -122,9 +121,10 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
|
||||
}
|
||||
|
||||
override fun onGalleryClicked() {
|
||||
val controller = findNavController()
|
||||
requestPermissionsForGallery {
|
||||
captureChildFragment.fadeOutControls {
|
||||
navigator.goToGallery(requireView())
|
||||
navigator.goToGallery(controller)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -139,8 +139,9 @@ class MediaCaptureFragment : Fragment(R.layout.fragment_container), CameraFragme
|
||||
}
|
||||
|
||||
override fun onCameraCountButtonClicked() {
|
||||
val controller = findNavController()
|
||||
captureChildFragment.fadeOutControls {
|
||||
navigator.goToReview(requireView())
|
||||
navigator.goToReview(controller)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import app.cash.exhaustive.Exhaustive
|
||||
import org.thoughtcrime.securesms.R
|
||||
@@ -100,17 +101,18 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
|
||||
|
||||
override fun onSelectedMediaClicked(media: Media) {
|
||||
sharedViewModel.setFocusedMedia(media)
|
||||
navigator.goToReview(requireView())
|
||||
navigator.goToReview(findNavController())
|
||||
}
|
||||
|
||||
override fun onNavigateToCamera() {
|
||||
val controller = findNavController()
|
||||
requestPermissionsForCamera {
|
||||
navigator.goToCamera(requireView())
|
||||
navigator.goToCamera(controller)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSubmit() {
|
||||
navigator.goToReview(requireView())
|
||||
navigator.goToReview(findNavController())
|
||||
}
|
||||
|
||||
override fun onToolbarNavigationClicked() {
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.core.graphics.drawable.DrawableCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.setFragmentResultListener
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
@@ -241,8 +242,9 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) {
|
||||
}
|
||||
|
||||
private fun launchGallery() {
|
||||
val controller = findNavController()
|
||||
requestPermissionsForGallery {
|
||||
navigator.goToGallery(requireView())
|
||||
navigator.goToGallery(controller)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user