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
|
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 {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue