mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Remove more SMS vestiges.
This commit is contained in:
@@ -85,7 +85,6 @@ public final class MultiShareSender {
|
||||
public static MultiShareSendResultCollection sendSync(@NonNull MultiShareArgs multiShareArgs) {
|
||||
List<MultiShareSendResult> results = new ArrayList<>(multiShareArgs.getContactSearchKeys().size());
|
||||
Context context = ApplicationDependencies.getApplication();
|
||||
boolean isMmsEnabled = Util.isMmsCapable(context);
|
||||
String message = multiShareArgs.getDraftText();
|
||||
SlideDeck slideDeck;
|
||||
List<OutgoingMessage> storiesBatch = new LinkedList<>();
|
||||
@@ -111,8 +110,7 @@ public final class MultiShareSender {
|
||||
MessageSendType sendType = MessageSendType.SignalMessageSendType.INSTANCE;
|
||||
long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds());
|
||||
List<Contact> contacts = multiShareArgs.getSharedContacts();
|
||||
boolean needsSplit = !sendType.usesSmsTransport() &&
|
||||
message != null &&
|
||||
boolean needsSplit = message != null &&
|
||||
message.length() > sendType.calculateCharacters(message).maxPrimaryMessageSize;
|
||||
boolean hasMmsMedia = !multiShareArgs.getMedia().isEmpty() ||
|
||||
(multiShareArgs.getDataUri() != null && multiShareArgs.getDataUri() != Uri.EMPTY) ||
|
||||
@@ -128,9 +126,9 @@ public final class MultiShareSender {
|
||||
MultiShareTimestampProvider sentTimestamp = recipient.isDistributionList() ? distributionListSentTimestamps : MultiShareTimestampProvider.create();
|
||||
boolean canSendAsTextStory = recipientSearchKey.isStory() && multiShareArgs.isValidForTextStoryGeneration();
|
||||
|
||||
if ((recipient.isMmsGroup() || recipient.getEmail().isPresent()) && !isMmsEnabled) {
|
||||
if ((recipient.isMmsGroup() || recipient.getEmail().isPresent())) {
|
||||
results.add(new MultiShareSendResult(recipientSearchKey, MultiShareSendResult.Type.MMS_NOT_ENABLED));
|
||||
} else if (hasMmsMedia && sendType.usesSmsTransport() || hasPushMedia && !sendType.usesSmsTransport() || canSendAsTextStory) {
|
||||
} else if (hasPushMedia || canSendAsTextStory) {
|
||||
sendMediaMessageOrCollectStoryToBatch(context,
|
||||
multiShareArgs,
|
||||
recipient,
|
||||
|
||||
@@ -6,13 +6,9 @@ import java.lang.UnsupportedOperationException
|
||||
|
||||
sealed class ResolvedShareData {
|
||||
|
||||
abstract val isMmsOrSmsSupported: Boolean
|
||||
|
||||
abstract fun toMultiShareArgs(): MultiShareArgs
|
||||
|
||||
data class Primitive(val text: CharSequence) : ResolvedShareData() {
|
||||
override val isMmsOrSmsSupported: Boolean = true
|
||||
|
||||
override fun toMultiShareArgs(): MultiShareArgs {
|
||||
return MultiShareArgs.Builder(setOf()).withDraftText(text.toString()).build()
|
||||
}
|
||||
@@ -21,8 +17,7 @@ sealed class ResolvedShareData {
|
||||
data class ExternalUri(
|
||||
val uri: Uri,
|
||||
val mimeType: String,
|
||||
val text: CharSequence?,
|
||||
override val isMmsOrSmsSupported: Boolean
|
||||
val text: CharSequence?
|
||||
) : ResolvedShareData() {
|
||||
override fun toMultiShareArgs(): MultiShareArgs {
|
||||
return MultiShareArgs.Builder(setOf()).withDataUri(uri).withDataType(mimeType).withDraftText(text?.toString()).build()
|
||||
@@ -30,8 +25,7 @@ sealed class ResolvedShareData {
|
||||
}
|
||||
|
||||
data class Media(
|
||||
val media: List<org.thoughtcrime.securesms.mediasend.Media>,
|
||||
override val isMmsOrSmsSupported: Boolean
|
||||
val media: List<org.thoughtcrime.securesms.mediasend.Media>
|
||||
) : ResolvedShareData() {
|
||||
override fun toMultiShareArgs(): MultiShareArgs {
|
||||
return MultiShareArgs.Builder(setOf()).withMedia(media).build()
|
||||
@@ -39,7 +33,6 @@ sealed class ResolvedShareData {
|
||||
}
|
||||
|
||||
object Failure : ResolvedShareData() {
|
||||
override val isMmsOrSmsSupported: Boolean get() = throw UnsupportedOperationException()
|
||||
override fun toMultiShareArgs(): MultiShareArgs = throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,7 +232,6 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
|
||||
R.id.fragment_container,
|
||||
MultiselectForwardFragment.create(
|
||||
MultiselectForwardFragmentArgs(
|
||||
canSendToNonPush = resolvedShareData.isMmsOrSmsSupported,
|
||||
multiShareArgs = listOf(resolvedShareData.toMultiShareArgs()),
|
||||
title = getTitleFromExtras(),
|
||||
forceDisableAddMessage = true,
|
||||
|
||||
@@ -1,28 +1,19 @@
|
||||
package org.thoughtcrime.securesms.sharing.v2
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.provider.OpenableColumns
|
||||
import androidx.annotation.NonNull
|
||||
import androidx.annotation.WorkerThread
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.util.toKotlinPair
|
||||
import io.reactivex.rxjava3.core.Single
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.attachments.Attachment
|
||||
import org.thoughtcrime.securesms.attachments.UriAttachment
|
||||
import org.thoughtcrime.securesms.conversation.MessageSendType
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.mediasend.Media
|
||||
import org.thoughtcrime.securesms.mms.MediaConstraints
|
||||
import org.thoughtcrime.securesms.providers.BlobProvider
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
||||
import org.thoughtcrime.securesms.util.MediaUtil
|
||||
import org.thoughtcrime.securesms.util.UriUtil
|
||||
import org.thoughtcrime.securesms.util.Util
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.util.Optional
|
||||
@@ -73,8 +64,7 @@ class ShareRepository(context: Context) {
|
||||
return ResolvedShareData.ExternalUri(
|
||||
uri = blobUri,
|
||||
mimeType = mimeType,
|
||||
text = multiShareExternal.text,
|
||||
isMmsOrSmsSupported = isMmsSupported(appContext, asUriAttachment(blobUri, mimeType, size))
|
||||
text = multiShareExternal.text
|
||||
)
|
||||
}
|
||||
|
||||
@@ -131,9 +121,7 @@ class ShareRepository(context: Context) {
|
||||
}.filterNotNull()
|
||||
|
||||
return if (media.isNotEmpty()) {
|
||||
val isMmsSupported = media.all { isMmsSupported(appContext, asUriAttachment(it.uri, it.mimeType, it.size)) }
|
||||
|
||||
ResolvedShareData.Media(media, isMmsSupported)
|
||||
ResolvedShareData.Media(media)
|
||||
} else {
|
||||
ResolvedShareData.Failure
|
||||
}
|
||||
@@ -179,21 +167,5 @@ class ShareRepository(context: Context) {
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private fun asUriAttachment(uri: Uri, mimeType: String, size: Long): UriAttachment {
|
||||
return UriAttachment(uri, mimeType, -1, size, null, false, false, false, false, null, null, null, null, null)
|
||||
}
|
||||
|
||||
private fun isMmsSupported(context: Context, attachment: Attachment): Boolean {
|
||||
val canReadPhoneState = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED
|
||||
|
||||
if (!Util.isDefaultSmsProvider(context) || !canReadPhoneState || !Util.isMmsCapable(context) || !SignalStore.misc().smsExportPhase.allowSmsFeatures()) {
|
||||
return false
|
||||
}
|
||||
|
||||
val sendType: MessageSendType = MessageSendType.getFirstForTransport(MessageSendType.TransportType.SMS)
|
||||
val mmsConstraints = MediaConstraints.getMmsMediaConstraints(sendType.simSubscriptionId ?: -1)
|
||||
return mmsConstraints.isSatisfied(context, attachment) || mmsConstraints.canResize(attachment)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user