From b076da38402359297a7877c3f9901a170e234609 Mon Sep 17 00:00:00 2001 From: Alier Date: Sat, 24 Jun 2023 04:09:35 +0600 Subject: [PATCH 1/5] Add Delete Action Button to Sms message --- app/src/main/AndroidManifest.xml | 9 ++++++ .../smsmessenger/extensions/Context.kt | 4 +-- .../smsmessenger/helpers/Constants.kt | 2 ++ .../helpers/NotificationHelper.kt | 18 +++++++++-- .../receivers/DeleteSmsReceiver.kt | 31 +++++++++++++++++++ app/src/main/res/values-az/strings.xml | 1 + 6 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DeleteSmsReceiver.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 71e5a511..91dfc6ec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -212,6 +212,15 @@ + + + + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 0bfbcb2a..f0faebb5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -683,13 +683,13 @@ fun Context.getThreadId(addresses: Set): Long { } } -fun Context.showReceivedMessageNotification(address: String, body: String, threadId: Long, bitmap: Bitmap?) { +fun Context.showReceivedMessageNotification(messageId: Long, address: String, body: String, threadId: Long, bitmap: Bitmap?) { val privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true) ensureBackgroundThread { val senderName = getNameFromAddress(address, privateCursor) Handler(Looper.getMainLooper()).post { - notificationHelper.showMessageNotification(address, body, threadId, bitmap, senderName) + notificationHelper.showMessageNotification(messageId, address, body, threadId, bitmap, senderName) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index b7da7d22..4db9a2ad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -35,6 +35,8 @@ const val WAS_DB_CLEARED = "was_db_cleared_2" const val EXTRA_VCARD_URI = "vcard" const val SCHEDULED_MESSAGE_ID = "scheduled_message_id" const val SOFT_KEYBOARD_HEIGHT = "soft_keyboard_height" +const val IS_MMS = "is_mms" +const val MESSAGE_ID = "message_id" private const val PATH = "com.simplemobiletools.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt index 35117def..e1d4ff45 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt @@ -23,6 +23,7 @@ import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.ThreadActivity import com.simplemobiletools.smsmessenger.extensions.config import com.simplemobiletools.smsmessenger.messaging.isShortCodeWithLetters +import com.simplemobiletools.smsmessenger.receivers.DeleteSmsReceiver import com.simplemobiletools.smsmessenger.receivers.DirectReplyReceiver import com.simplemobiletools.smsmessenger.receivers.MarkAsReadReceiver @@ -35,7 +36,7 @@ class NotificationHelper(private val context: Context) { .build() @SuppressLint("NewApi") - fun showMessageNotification(address: String, body: String, threadId: Long, bitmap: Bitmap?, sender: String?, alertOnlyOnce: Boolean = false) { + fun showMessageNotification(messageId: Long, address: String, body: String, threadId: Long, bitmap: Bitmap?, sender: String?, alertOnlyOnce: Boolean = false) { maybeCreateChannel(name = context.getString(R.string.channel_received_sms)) val notificationId = threadId.hashCode() @@ -52,8 +53,16 @@ class NotificationHelper(private val context: Context) { val markAsReadPendingIntent = PendingIntent.getBroadcast(context, notificationId, markAsReadIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE) + val deleteSmsIntent = Intent(context, DeleteSmsReceiver::class.java).apply { + putExtra(THREAD_ID, threadId) + putExtra(MESSAGE_ID, messageId) + } + val deleteSmsPendingIntent = + PendingIntent.getBroadcast(context, notificationId, deleteSmsIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE) + var replyAction: NotificationCompat.Action? = null - if (isNougatPlus() && !isShortCodeWithLetters(address)) { + val isNoReplySms = isShortCodeWithLetters(address) + if (isNougatPlus() && !isNoReplySms) { val replyLabel = context.getString(R.string.reply) val remoteInput = RemoteInput.Builder(REPLY) .setLabel(replyLabel) @@ -112,7 +121,10 @@ class NotificationHelper(private val context: Context) { builder.addAction(R.drawable.ic_check_vector, context.getString(R.string.mark_as_read), markAsReadPendingIntent) .setChannelId(NOTIFICATION_CHANNEL) - + if (isNoReplySms) { + builder.addAction(R.drawable.ic_delete_vector, context.getString(R.string.delete_messages), deleteSmsPendingIntent) + .setChannelId(NOTIFICATION_CHANNEL) + } notificationManager.notify(notificationId, builder.build()) } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DeleteSmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DeleteSmsReceiver.kt new file mode 100644 index 00000000..fc11d50b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DeleteSmsReceiver.kt @@ -0,0 +1,31 @@ +package com.simplemobiletools.smsmessenger.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.simplemobiletools.commons.extensions.notificationManager +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.smsmessenger.extensions.conversationsDB +import com.simplemobiletools.smsmessenger.extensions.deleteMessage +import com.simplemobiletools.smsmessenger.extensions.updateLastConversationMessage +import com.simplemobiletools.smsmessenger.extensions.updateUnreadCountBadge +import com.simplemobiletools.smsmessenger.helpers.IS_MMS +import com.simplemobiletools.smsmessenger.helpers.MESSAGE_ID +import com.simplemobiletools.smsmessenger.helpers.THREAD_ID +import com.simplemobiletools.smsmessenger.helpers.refreshMessages + +class DeleteSmsReceiver: BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + val threadId = intent.getLongExtra(THREAD_ID, 0L) + val messageId = intent.getLongExtra(MESSAGE_ID, 0L) + val isMms = intent.getBooleanExtra(IS_MMS, false) + context.notificationManager.cancel(threadId.hashCode()) + ensureBackgroundThread { + context.deleteMessage(messageId, isMms) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) + context.updateLastConversationMessage(threadId) + refreshMessages() + } + } +} diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 669639ec..3fd35085 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -59,6 +59,7 @@ %d conversation %d conversations + Delete message %d message From 5169539a88e4609a8a414149c9a9f1284b21d9f9 Mon Sep 17 00:00:00 2001 From: AAlier Date: Sat, 24 Jun 2023 04:28:35 +0600 Subject: [PATCH 2/5] Add missing code --- .../smsmessenger/receivers/DirectReplyReceiver.kt | 4 +++- .../simplemobiletools/smsmessenger/receivers/MmsReceiver.kt | 2 +- .../simplemobiletools/smsmessenger/receivers/SmsReceiver.kt | 2 +- app/src/main/res/values-az/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 + 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt index 94365420..d38c4161 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt @@ -37,11 +37,13 @@ class DirectReplyReceiver : BroadcastReceiver() { } ensureBackgroundThread { + var messageId: Long = 0L try { context.sendMessageCompat(body, listOf(address), subscriptionId, emptyList()) val message = context.getMessages(threadId, getImageResolutions = false, includeScheduledMessages = false, limit = 1).lastOrNull() if (message != null) { context.messagesDB.insertOrUpdate(message) + messageId = message.id } } catch (e: Exception) { context.showErrorToast(e) @@ -50,7 +52,7 @@ class DirectReplyReceiver : BroadcastReceiver() { val photoUri = SimpleContactsHelper(context).getPhotoUriFromPhoneNumber(address) val bitmap = context.getNotificationBitmap(photoUri) Handler(Looper.getMainLooper()).post { - context.notificationHelper.showMessageNotification(address, body, threadId, bitmap, sender = null, alertOnlyOnce = true) + context.notificationHelper.showMessageNotification(messageId, address, body, threadId, bitmap, sender = null, alertOnlyOnce = true) } context.markThreadMessagesRead(threadId) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index dbf08b8f..13c28e59 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -38,7 +38,7 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { } Handler(Looper.getMainLooper()).post { - context.showReceivedMessageNotification(address, mms.body, mms.threadId, glideBitmap) + context.showReceivedMessageNotification(mms.id, address, mms.body, mms.threadId, glideBitmap) val conversation = context.getConversations(mms.threadId).firstOrNull() ?: return@post ensureBackgroundThread { context.insertOrUpdateConversation(conversation) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index 089945e6..65908487 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -86,9 +86,9 @@ class SmsReceiver : BroadcastReceiver() { Message(newMessageId, body, type, status, participants, messageDate, false, threadId, false, null, senderName, photoUri, subscriptionId) context.messagesDB.insertOrUpdate(message) refreshMessages() + context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap) } - context.showReceivedMessageNotification(address, body, threadId, bitmap) } } } diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 3fd35085..669639ec 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -59,7 +59,6 @@ %d conversation %d conversations - Delete message %d message diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e2a271f..6aac8222 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,6 +52,7 @@ Mark as Read Mark as Unread Me + Delete message Are you sure you want to delete all messages of this conversation? From a21662baef48699f1186a039a4bfea2a462fc73e Mon Sep 17 00:00:00 2001 From: Alier Date: Mon, 26 Jun 2023 16:27:23 +0600 Subject: [PATCH 3/5] Update string translation --- .../smsmessenger/helpers/NotificationHelper.kt | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt index e1d4ff45..74bdd5fe 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/NotificationHelper.kt @@ -122,7 +122,7 @@ class NotificationHelper(private val context: Context) { builder.addAction(R.drawable.ic_check_vector, context.getString(R.string.mark_as_read), markAsReadPendingIntent) .setChannelId(NOTIFICATION_CHANNEL) if (isNoReplySms) { - builder.addAction(R.drawable.ic_delete_vector, context.getString(R.string.delete_messages), deleteSmsPendingIntent) + builder.addAction(R.drawable.ic_delete_vector, context.getString(R.string.delete), deleteSmsPendingIntent) .setChannelId(NOTIFICATION_CHANNEL) } notificationManager.notify(notificationId, builder.build()) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6aac8222..c2616053 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,7 +52,7 @@ Mark as Read Mark as Unread Me - Delete message + Delete Are you sure you want to delete all messages of this conversation? From 3a4f54b4befb7c3c8ccd4e0585c184aa9a2b4262 Mon Sep 17 00:00:00 2001 From: Alier Date: Tue, 27 Jun 2023 02:40:41 +0600 Subject: [PATCH 4/5] Remove extra translation --- app/src/main/res/values/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2616053..0e2a271f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,7 +52,6 @@ Mark as Read Mark as Unread Me - Delete Are you sure you want to delete all messages of this conversation? From 73c12d0db1c2fadae9ae47c7f4d3f1b6ec044a75 Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Mon, 26 Jun 2023 22:48:13 +0200 Subject: [PATCH 5/5] removing an empty line --- .../com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index 65908487..9b29db93 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -88,7 +88,6 @@ class SmsReceiver : BroadcastReceiver() { refreshMessages() context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap) } - } } }