From 9aa7543f2f51d7152401807558ad20bbc1d06524 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 7 Oct 2022 14:42:49 -0300 Subject: [PATCH] Do not display stories as valid selections when sending view-once media. --- .../mutiselect/forward/MultiselectForwardActivity.kt | 1 - .../mutiselect/forward/MultiselectForwardFragment.kt | 2 +- .../mutiselect/forward/MultiselectForwardFragmentArgs.kt | 3 ++- .../securesms/mediasend/v2/review/MediaReviewFragment.kt | 5 ++++- .../org/thoughtcrime/securesms/sharing/MultiShareArgs.java | 4 ++++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardActivity.kt index 16e800524d..4d7b72a2bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardActivity.kt @@ -10,7 +10,6 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.color.ViewColorSet import org.thoughtcrime.securesms.components.FragmentWrapperActivity import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment.Companion.RESULT_SELECTION diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt index 77ec1289b3..0ce2139e55 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt @@ -459,7 +459,7 @@ class MultiselectForwardFragment : } private fun isSelectedMediaValidForStories(): Boolean { - return args.multiShareArgs.all { it.isValidForStories } + return !args.isViewOnce && args.multiShareArgs.all { it.isValidForStories } } private fun isSelectedMediaValidForNonStories(): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragmentArgs.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragmentArgs.kt index 7f967071ba..ec423cfe87 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragmentArgs.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragmentArgs.kt @@ -46,7 +46,8 @@ data class MultiselectForwardFragmentArgs @JvmOverloads constructor( val selectSingleRecipient: Boolean = false, val sendButtonColors: ViewColorSet = ViewColorSet.PRIMARY, val storySendRequirements: Stories.MediaTransform.SendRequirements = Stories.MediaTransform.SendRequirements.CAN_NOT_SEND, - val isSearchEnabled: Boolean = true + val isSearchEnabled: Boolean = true, + val isViewOnce: Boolean = false ) : Parcelable { fun withSendButtonTint(@ColorInt sendButtonTint: Int) = copy(sendButtonColors = ViewColorSet.forCustomColor(sendButtonTint)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index b7ec225a2b..331c8ccfed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -160,12 +160,15 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { } sendButton.setOnClickListener { + val viewOnce: Boolean = sharedViewModel.state.value?.viewOnceToggleState == MediaSelectionState.ViewOnceToggleState.ONCE + if (sharedViewModel.isContactSelectionRequired) { val args = MultiselectForwardFragmentArgs( false, title = R.string.MediaReviewFragment__send_to, storySendRequirements = sharedViewModel.getStorySendRequirements(), - isSearchEnabled = !sharedViewModel.isStory() + isSearchEnabled = !sharedViewModel.isStory(), + isViewOnce = viewOnce ) if (sharedViewModel.isStory()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java index 924484bd5b..923dbc5191 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java @@ -149,6 +149,10 @@ public final class MultiShareArgs implements Parcelable { } public boolean isValidForStories() { + if (isViewOnce()) { + return false; + } + return isTextStory || (!media.isEmpty() && media.stream().allMatch(m -> MediaUtil.isStorySupportedType(m.getMimeType()))) || MediaUtil.isStorySupportedType(dataType) ||