kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix navigation from camera crash.
rodzic
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue