Remove more SMS vestiges.

This commit is contained in:
Greyson Parrelli
2024-03-12 13:47:18 -04:00
parent 6754fef164
commit 825ca0d737
94 changed files with 60 additions and 8017 deletions

View File

@@ -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,

View File

@@ -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()
}
}

View File

@@ -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,

View File

@@ -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)
}
}
}