mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Remove duplicate error handling in MediaSelection.
This commit is contained in:
@@ -8,6 +8,7 @@ import android.os.Bundle
|
||||
import android.view.KeyEvent
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
@@ -21,8 +22,10 @@ import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.transition.AutoTransition
|
||||
import androidx.transition.TransitionManager
|
||||
import com.google.android.material.animation.ArgbEvaluatorCompat
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.BreakIteratorCompat
|
||||
import org.signal.core.util.OVERRIDE_TRANSITION_CLOSE_COMPAT
|
||||
import org.signal.core.util.concurrent.LifecycleDisposable
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
@@ -64,6 +67,8 @@ class MediaSelectionActivity :
|
||||
|
||||
lateinit var viewModel: MediaSelectionViewModel
|
||||
|
||||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private val textViewModel: TextStoryPostCreationViewModel by viewModels(
|
||||
factoryProducer = {
|
||||
TextStoryPostCreationViewModel.Factory(TextStoryPostSendRepository())
|
||||
@@ -172,9 +177,30 @@ class MediaSelectionActivity :
|
||||
}
|
||||
}
|
||||
|
||||
lifecycleDisposable.bindTo(this)
|
||||
lifecycleDisposable += viewModel.mediaErrors
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(this::handleError)
|
||||
|
||||
onBackPressedDispatcher.addCallback(OnBackPressed())
|
||||
}
|
||||
|
||||
private fun handleError(error: MediaValidator.FilterError) {
|
||||
when (error) {
|
||||
MediaValidator.FilterError.None -> return
|
||||
MediaValidator.FilterError.ItemTooLarge -> Toast.makeText(this, R.string.MediaReviewFragment__one_or_more_items_were_too_large, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.ItemInvalidType -> Toast.makeText(this, R.string.MediaReviewFragment__one_or_more_items_were_invalid, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.TooManyItems -> Toast.makeText(this, R.string.MediaReviewFragment__too_many_items_selected, Toast.LENGTH_SHORT).show()
|
||||
is MediaValidator.FilterError.NoItems -> {
|
||||
if (error.cause != null) {
|
||||
handleError(error.cause)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.clearMediaErrors()
|
||||
}
|
||||
|
||||
private fun animateTextStyling(selectedSwitch: TextView, unselectedSwitch: TextView, duration: Long) {
|
||||
val offTextColor = ContextCompat.getColor(this, R.color.signal_colorOnSurface)
|
||||
val onTextColor = ContextCompat.getColor(this, R.color.signal_colorSecondaryContainer)
|
||||
|
||||
@@ -2,20 +2,16 @@ package org.thoughtcrime.securesms.mediasend.v2.gallery
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
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 io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.concurrent.LifecycleDisposable
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mediasend.Media
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionNavigator
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionNavigator.Companion.requestPermissionsForCamera
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionViewModel
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaValidator
|
||||
import org.thoughtcrime.securesms.mediasend.v2.review.MediaSelectionItemTouchHelper
|
||||
import org.thoughtcrime.securesms.permissions.Permissions
|
||||
|
||||
@@ -25,8 +21,6 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
|
||||
|
||||
private lateinit var mediaGalleryFragment: MediaGalleryFragment
|
||||
|
||||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private val navigator = MediaSelectionNavigator(
|
||||
toCamera = R.id.action_mediaGalleryFragment_to_mediaCaptureFragment
|
||||
)
|
||||
@@ -61,27 +55,6 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
||||
lifecycleDisposable += sharedViewModel.mediaErrors
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(this::handleError)
|
||||
}
|
||||
|
||||
private fun handleError(error: MediaValidator.FilterError) {
|
||||
when (error) {
|
||||
MediaValidator.FilterError.None -> return
|
||||
MediaValidator.FilterError.ItemTooLarge -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__one_or_more_items_were_too_large, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.ItemInvalidType -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__one_or_more_items_were_invalid, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.TooManyItems -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__too_many_items_selected, Toast.LENGTH_SHORT).show()
|
||||
is MediaValidator.FilterError.NoItems -> {
|
||||
if (error.cause != null) {
|
||||
handleError(error.cause)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sharedViewModel.clearMediaErrors()
|
||||
}
|
||||
|
||||
private fun ensureMediaGalleryFragment(): MediaGalleryFragment {
|
||||
|
||||
@@ -16,7 +16,6 @@ import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import android.widget.ViewSwitcher
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
@@ -32,7 +31,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.imageview.ShapeableImageView
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.bytes
|
||||
import org.signal.core.util.concurrent.LifecycleDisposable
|
||||
import org.signal.core.util.concurrent.SimpleTask
|
||||
@@ -53,7 +51,6 @@ import org.thoughtcrime.securesms.mediasend.v2.MediaAnimations
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionNavigator
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionState
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionViewModel
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaValidator
|
||||
import org.thoughtcrime.securesms.mediasend.v2.stories.StoriesMultiselectForwardActivity
|
||||
import org.thoughtcrime.securesms.mms.MediaConstraints
|
||||
import org.thoughtcrime.securesms.mms.SentMediaQuality
|
||||
@@ -368,11 +365,6 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
|
||||
computeViewStateAndAnimate(state)
|
||||
}
|
||||
|
||||
disposables.bindTo(viewLifecycleOwner)
|
||||
disposables += sharedViewModel.mediaErrors
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(this::handleMediaValidatorFilterError)
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
@@ -442,25 +434,6 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
|
||||
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults)
|
||||
}
|
||||
|
||||
private fun handleMediaValidatorFilterError(error: MediaValidator.FilterError) {
|
||||
when (error) {
|
||||
MediaValidator.FilterError.None -> return
|
||||
MediaValidator.FilterError.ItemTooLarge -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__one_or_more_items_were_too_large, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.ItemInvalidType -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__one_or_more_items_were_invalid, Toast.LENGTH_SHORT).show()
|
||||
MediaValidator.FilterError.TooManyItems -> Toast.makeText(requireContext(), R.string.MediaReviewFragment__too_many_items_selected, Toast.LENGTH_SHORT).show()
|
||||
is MediaValidator.FilterError.NoItems -> {
|
||||
if (error.cause != null) {
|
||||
handleMediaValidatorFilterError(error.cause)
|
||||
} else {
|
||||
Toast.makeText(requireContext(), R.string.MediaReviewFragment__one_or_more_items_were_invalid, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
callback.onNoMediaSelected()
|
||||
}
|
||||
}
|
||||
|
||||
sharedViewModel.clearMediaErrors()
|
||||
}
|
||||
|
||||
private fun launchGallery() {
|
||||
val controller = findNavController()
|
||||
navigator.goToGallery(controller)
|
||||
|
||||
Reference in New Issue
Block a user