mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-22 03:58:48 +00:00
Fix issue with sharing resizable media to MMS.
This commit is contained in:
@@ -20,6 +20,8 @@ import org.signal.core.util.concurrent.SignalExecutors;
|
|||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.TransportOption;
|
import org.thoughtcrime.securesms.TransportOption;
|
||||||
import org.thoughtcrime.securesms.TransportOptions;
|
import org.thoughtcrime.securesms.TransportOptions;
|
||||||
|
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||||
|
import org.thoughtcrime.securesms.attachments.UriAttachment;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.mediasend.Media;
|
import org.thoughtcrime.securesms.mediasend.Media;
|
||||||
import org.thoughtcrime.securesms.mediasend.MediaSendConstants;
|
import org.thoughtcrime.securesms.mediasend.MediaSendConstants;
|
||||||
@@ -113,11 +115,15 @@ class ShareRepository {
|
|||||||
// TODO Convert to multi-session after file drafts are fixed.
|
// TODO Convert to multi-session after file drafts are fixed.
|
||||||
}
|
}
|
||||||
|
|
||||||
return ShareData.forIntentData(blobUri, mimeType, true, isMmsSupported(context, mimeType, size));
|
return ShareData.forIntentData(blobUri, mimeType, true, isMmsSupported(context, asUriAttachment(blobUri, mimeType, size)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMmsSupported(@NonNull Context context, @NonNull String mimeType, long size) {
|
private @NonNull UriAttachment asUriAttachment(@NonNull Uri uri, @NonNull String mimeType, long size) {
|
||||||
|
return new UriAttachment(uri, mimeType, -1, size, null, false, false, false, false, null, null, null, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isMmsSupported(@NonNull Context context, @NonNull Attachment attachment) {
|
||||||
boolean canReadPhoneState = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED;
|
boolean canReadPhoneState = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED;
|
||||||
if (!TextSecurePreferences.isSmsEnabled(context) || !canReadPhoneState || !Util.isMmsCapable(context)) {
|
if (!TextSecurePreferences.isSmsEnabled(context) || !canReadPhoneState || !Util.isMmsCapable(context)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -127,20 +133,7 @@ class ShareRepository {
|
|||||||
options.setDefaultTransport(TransportOption.Type.SMS);
|
options.setDefaultTransport(TransportOption.Type.SMS);
|
||||||
MediaConstraints mmsConstraints = MediaConstraints.getMmsMediaConstraints(options.getSelectedTransport().getSimSubscriptionId().or(-1));
|
MediaConstraints mmsConstraints = MediaConstraints.getMmsMediaConstraints(options.getSelectedTransport().getSimSubscriptionId().or(-1));
|
||||||
|
|
||||||
final boolean canMmsSupportFileSize;
|
return mmsConstraints.isSatisfied(context, attachment) || mmsConstraints.canResize(attachment);
|
||||||
if (MediaUtil.isGif(mimeType)) {
|
|
||||||
canMmsSupportFileSize = size <= mmsConstraints.getGifMaxSize(context);
|
|
||||||
} else if (MediaUtil.isVideo(mimeType)) {
|
|
||||||
canMmsSupportFileSize = size <= mmsConstraints.getVideoMaxSize(context);
|
|
||||||
} else if (MediaUtil.isImageType(mimeType)) {
|
|
||||||
canMmsSupportFileSize = size <= mmsConstraints.getImageMaxSize(context);
|
|
||||||
} else if (MediaUtil.isAudioType(mimeType)) {
|
|
||||||
canMmsSupportFileSize = size <= mmsConstraints.getAudioMaxSize(context);
|
|
||||||
} else {
|
|
||||||
canMmsSupportFileSize = size <= mmsConstraints.getDocumentMaxSize(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
return canMmsSupportFileSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
@@ -202,7 +195,7 @@ class ShareRepository {
|
|||||||
|
|
||||||
if (media.size() > 0) {
|
if (media.size() > 0) {
|
||||||
boolean isMmsSupported = Stream.of(media)
|
boolean isMmsSupported = Stream.of(media)
|
||||||
.allMatch(m -> isMmsSupported(context, m.getMimeType(), m.getSize()));
|
.allMatch(m -> isMmsSupported(context, asUriAttachment(m.getUri(), m.getMimeType(), m.getSize())));
|
||||||
return ShareData.forMedia(media, isMmsSupported);
|
return ShareData.forMedia(media, isMmsSupported);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user