diff --git a/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java b/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java index fac79eb156..2dabfb460a 100644 --- a/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java +++ b/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java @@ -11,6 +11,7 @@ import android.text.TextUtils; import com.annimon.stream.Stream; +import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.util.guava.Optional; @@ -45,15 +46,18 @@ class MediaSendViewModel extends ViewModel { } void setInitialSelectedMedia(@NonNull List newMedia) { - boolean allBucketsPopulated = Stream.of(newMedia).reduce(true, (populated, m) -> populated && m.getBucketId().isPresent()); + List filteredMedia = getFilteredMedia(newMedia); + boolean allBucketsPopulated = Stream.of(filteredMedia).reduce(true, (populated, m) -> populated && m.getBucketId().isPresent()); - selectedMedia.setValue(newMedia); - bucketId.setValue(allBucketsPopulated ? computeBucketId(newMedia) : Optional.absent()); + selectedMedia.setValue(filteredMedia); + bucketId.setValue(allBucketsPopulated ? computeBucketId(filteredMedia) : Optional.absent()); } void onSelectedMediaChanged(@NonNull List newMedia) { - selectedMedia.setValue(newMedia); - position.setValue(newMedia.isEmpty() ? -1 : 0); + List filteredMedia = getFilteredMedia(newMedia); + + selectedMedia.setValue(filteredMedia); + position.setValue(filteredMedia.isEmpty() ? -1 : 0); } void onFolderSelected(@NonNull String bucketId) { @@ -120,6 +124,13 @@ class MediaSendViewModel extends ViewModel { return Optional.of(candidate); } + private @NonNull List getFilteredMedia(@NonNull List media) { + return Stream.of(media).filter(m -> MediaUtil.isGif(m.getMimeType()) || + MediaUtil.isImageType(m.getMimeType()) || + MediaUtil.isVideoType(m.getMimeType())).toList(); + + } + static class Factory extends ViewModelProvider.NewInstanceFactory { private final MediaRepository repository;