Display error when initial attachment selection is too large.

This commit is contained in:
Nicholas
2023-09-13 10:40:35 -04:00
committed by Alex Hart
parent 53b1544b58
commit 2f53c1a860
4 changed files with 12 additions and 1 deletions

View File

@@ -75,7 +75,7 @@ class MediaSelectionViewModel(
private val internalHudCommands = PublishSubject.create<HudCommand>()
val mediaErrors: PublishSubject<MediaValidator.FilterError> = PublishSubject.create()
val mediaErrors: BehaviorSubject<MediaValidator.FilterError> = BehaviorSubject.createDefault(MediaValidator.FilterError.None)
val hudCommands: Observable<HudCommand> = internalHudCommands
private val disposables = CompositeDisposable()
@@ -421,6 +421,10 @@ class MediaSelectionViewModel(
return store.state.selectedMedia.isNotEmpty()
}
fun clearMediaErrors() {
mediaErrors.onNext(MediaValidator.FilterError.None)
}
fun onRestoreState(context: Context, savedInstanceState: Bundle) {
val selection: List<Media> = savedInstanceState.getParcelableArrayListCompat(STATE_SELECTION, Media::class.java) ?: emptyList()
val focused: Media? = savedInstanceState.getParcelableCompat(STATE_FOCUSED, Media::class.java)

View File

@@ -83,5 +83,6 @@ object MediaValidator {
require(cause !is NoItems)
}
}
object None : FilterError()
}
}

View File

@@ -74,6 +74,7 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
private fun handleError(error: MediaValidator.FilterError) {
@Exhaustive
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()
@@ -83,6 +84,8 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med
}
}
}
sharedViewModel.clearMediaErrors()
}
private fun ensureMediaGalleryFragment(): MediaGalleryFragment {

View File

@@ -317,6 +317,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
private fun handleMediaValidatorFilterError(error: MediaValidator.FilterError) {
@Exhaustive
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()
@@ -329,6 +330,8 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul
callback.onNoMediaSelected()
}
}
sharedViewModel.clearMediaErrors()
}
private fun launchGallery() {