From abb7e66105fbac931cafb2ea37436b1493e62330 Mon Sep 17 00:00:00 2001 From: Naveen Date: Mon, 6 Mar 2023 14:28:11 +0530 Subject: [PATCH] Allow sending only-text MMS messages Fixes regression caused by recent changes in https://github.com/SimpleMobileTools/Simple-SMS-Messenger/pull/589 --- .../smsmessenger/messaging/Messaging.kt | 20 +++++++---- .../smsmessenger/messaging/MessagingUtils.kt | 34 +++++++++---------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/Messaging.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/Messaging.kt index 494a9d66..e02a1a6c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/Messaging.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/Messaging.kt @@ -38,18 +38,24 @@ fun Context.sendMessageCompat(text: String, addresses: List, subId: Int? settings.subscriptionId = subId } + val messagingUtils = messagingUtils val isMms = attachments.isNotEmpty() || isLongMmsMessage(text, settings) || addresses.size > 1 && settings.group if (isMms) { // we send all MMS attachments separately to reduces the chances of hitting provider MMS limit. - if (attachments.size > 1) { - for (i in 0 until attachments.lastIndex) { - val attachment = attachments[i] - messagingUtils.sendMmsMessage("", addresses, listOf(attachment), settings) + if (attachments.isNotEmpty()) { + val lastIndex = attachments.lastIndex + if (attachments.size > 1) { + for (i in 0 until lastIndex) { + val attachment = attachments[i] + messagingUtils.sendMmsMessage("", addresses, attachment, settings) + } } - } - val lastAttachment = attachments[attachments.lastIndex] - messagingUtils.sendMmsMessage(text, addresses, listOf(lastAttachment), settings) + val lastAttachment = attachments[lastIndex] + messagingUtils.sendMmsMessage(text, addresses, lastAttachment, settings) + } else { + messagingUtils.sendMmsMessage(text, addresses, null, settings) + } } else { try { messagingUtils.sendSmsMessage(text, addresses.toSet(), settings.subscriptionId, settings.deliveryReports) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/MessagingUtils.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/MessagingUtils.kt index cc52bf2c..5c787781 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/MessagingUtils.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/messaging/MessagingUtils.kt @@ -133,29 +133,27 @@ class MessagingUtils(val context: Context) { } @Deprecated("TODO: Move/rewrite MMS code into the app.") - fun sendMmsMessage(text: String, addresses: List, attachments: List, settings: Settings) { + fun sendMmsMessage(text: String, addresses: List, attachment: Attachment?, settings: Settings) { val transaction = Transaction(context, settings) val message = Message(text, addresses.toTypedArray()) - if (attachments.isNotEmpty()) { - for (attachment in attachments) { - try { - val uri = attachment.getUri() - context.contentResolver.openInputStream(uri)?.use { - val bytes = it.readBytes() - val mimeType = if (attachment.mimetype.isPlainTextMimeType()) { - "application/txt" - } else { - attachment.mimetype - } - val name = attachment.filename - message.addMedia(bytes, mimeType, name, name) + if (attachment != null) { + try { + val uri = attachment.getUri() + context.contentResolver.openInputStream(uri)?.use { + val bytes = it.readBytes() + val mimeType = if (attachment.mimetype.isPlainTextMimeType()) { + "application/txt" + } else { + attachment.mimetype } - } catch (e: Exception) { - context.showErrorToast(e) - } catch (e: Error) { - context.showErrorToast(e.localizedMessage ?: context.getString(R.string.unknown_error_occurred)) + val name = attachment.filename + message.addMedia(bytes, mimeType, name, name) } + } catch (e: Exception) { + context.showErrorToast(e) + } catch (e: Error) { + context.showErrorToast(e.localizedMessage ?: context.getString(R.string.unknown_error_occurred)) } }