Use media forward sheet when forwarding in Media preview.

This commit is contained in:
Alex Hart
2022-04-04 14:10:18 -03:00
committed by Cody Henthorne
parent d865b5d7b5
commit 477698f917
4 changed files with 68 additions and 4 deletions

View File

@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.conversation.mutiselect
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.net.Uri
import androidx.core.content.ContextCompat
import org.thoughtcrime.securesms.TransportOption
import org.thoughtcrime.securesms.TransportOptions
@@ -74,6 +75,22 @@ object Multiselect {
}
}
/**
* Helper function to determine whether a given attachment can be sent via MMS.
*/
fun isMmsSupported(context: Context, mediaUri: Uri, mediaType: String, mediaSize: Long): Boolean {
val canReadPhoneState = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED
if (!Util.isDefaultSmsProvider(context) || !canReadPhoneState || !Util.isMmsCapable(context)) {
return false
}
val options = TransportOptions(context, true)
options.setDefaultTransport(TransportOption.Type.SMS)
val mmsConstraints = MediaConstraints.getMmsMediaConstraints(options.selectedTransport.simSubscriptionId.orElse(-1))
return mmsConstraints.isSatisfied(context, mediaUri, mediaType, mediaSize) || mmsConstraints.canResize(mediaType)
}
private fun canSendAllAttachmentsToNonPush(context: Context, messageRecord: MessageRecord): Boolean {
return if (messageRecord is MmsMessageRecord) {
messageRecord.slideDeck.asAttachments().all { isMmsSupported(context, it) }

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.conversation.mutiselect.forward
import android.content.Context
import android.net.Uri
import androidx.annotation.StringRes
import androidx.annotation.WorkerThread
import org.signal.core.util.StreamUtil
@@ -15,6 +16,7 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.mms.PartAuthority
import org.thoughtcrime.securesms.sharing.MultiShareArgs
import org.thoughtcrime.securesms.util.MediaUtil
import java.util.Optional
import java.util.function.Consumer
@@ -32,6 +34,27 @@ class MultiselectForwardFragmentArgs(
) {
companion object {
@JvmStatic
fun create(context: Context, mediaUri: Uri, mediaType: String, consumer: Consumer<MultiselectForwardFragmentArgs>) {
SignalExecutors.BOUNDED.execute {
val mediaSize = MediaUtil.getMediaSize(context, mediaUri)
val isMmsSupported = Multiselect.isMmsSupported(context, mediaUri, mediaType, mediaSize)
val multiShareArgs = MultiShareArgs.Builder(setOf())
.withDataUri(mediaUri)
.withDataType(mediaType)
.build()
ThreadUtil.runOnMain {
consumer.accept(
MultiselectForwardFragmentArgs(
isMmsSupported,
listOf(multiShareArgs)
)
)
}
}
}
@JvmStatic
fun create(context: Context, selectedParts: Set<MultiselectPart>, consumer: Consumer<MultiselectForwardFragmentArgs>) {
SignalExecutors.BOUNDED.execute {