mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-26 03:40:56 +01:00
Use media forward sheet when forwarding in Media preview.
This commit is contained in:
committed by
Cody Henthorne
parent
d865b5d7b5
commit
477698f917
@@ -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) }
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user