From cf75ab71d46b3d3ed77f95028f0f539895157c85 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 17:04:41 +0100 Subject: [PATCH 01/20] make sure sent messages have proper SIM card associated --- app/src/main/AndroidManifest.xml | 11 ++++---- .../smsmessenger/activities/ThreadActivity.kt | 26 ++++++++++++++++--- .../smsmessenger/extensions/Context.kt | 10 +++++++ .../smsmessenger/models/Message.kt | 2 +- ...ntReceiver.kt => MmsStatusSentReceiver.kt} | 7 ++--- .../receivers/SmsStatusDeliveredReceiver.kt | 13 ++++++++++ .../receivers/SmsStatusSentReceiver.kt | 13 ++++++++++ 7 files changed, 70 insertions(+), 12 deletions(-) rename app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/{SmsSentReceiver.kt => MmsStatusSentReceiver.kt} (52%) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 814fde4a..cfc04a2b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -121,6 +121,12 @@ + + + + + + @@ -149,11 +155,6 @@ android:exported="true" android:taskAffinity="com.klinker.android.messaging.MMS_RECEIVED" /> - - lastMaxId }.forEach { - messagesDB.insertOrIgnore(it) + messages.filter { !it.isReceivedMessage() && it.id > lastMaxId }.forEach { latestMessage -> + // subscriptionIds seem to be not filled out at sending with multiple SIM cards, so fill it manually + if (SubscriptionManager.from(this).activeSubscriptionInfoList?.size ?: 0 > 1) { + val SIMId = availableSIMCards.getOrNull(currentSIMCardIndex)?.subscriptionId + if (SIMId != null) { + updateMessageSubscriptionId(latestMessage.id, SIMId) + latestMessage.subscriptionId = SIMId + } + } + + messagesDB.insertOrIgnore(latestMessage) } setupAdapter() 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 0cd08cd6..1c1b1be5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -554,6 +554,16 @@ fun Context.markThreadMessagesUnread(threadId: Long) { } } +fun Context.updateMessageSubscriptionId(messageId: Long, subscriptionId: Int) { + val uri = Sms.CONTENT_URI + val contentValues = ContentValues().apply { + put(Sms.SUBSCRIPTION_ID, subscriptionId) + } + val selection = "${Sms._ID} = ?" + val selectionArgs = arrayOf(messageId.toString()) + contentResolver.update(uri, contentValues, selection, selectionArgs) +} + fun Context.updateUnreadCountBadge(conversations: List) { val unreadCount = conversations.count { !it.read } if (unreadCount == 0) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt index a9580099..54d96d04 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt @@ -19,7 +19,7 @@ data class Message( @ColumnInfo(name = "attachment") val attachment: MessageAttachment?, @ColumnInfo(name = "sender_name") var senderName: String, @ColumnInfo(name = "sender_photo_uri") val senderPhotoUri: String, - @ColumnInfo(name = "subscription_id") val subscriptionId: Int) : ThreadItem() { + @ColumnInfo(name = "subscription_id") var subscriptionId: Int) : ThreadItem() { fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsSentReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsStatusSentReceiver.kt similarity index 52% rename from app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsSentReceiver.kt rename to app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsStatusSentReceiver.kt index 2321c414..a007865a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsSentReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsStatusSentReceiver.kt @@ -1,12 +1,13 @@ package com.simplemobiletools.smsmessenger.receivers +import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import com.klinker.android.send_message.SentReceiver import com.simplemobiletools.smsmessenger.helpers.refreshMessages -class SmsSentReceiver : SentReceiver() { - override fun onMessageStatusUpdated(context: Context, intent: Intent, receiverResultCode: Int) { +class MmsStatusSentReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { refreshMessages() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt new file mode 100644 index 00000000..fb87699d --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt @@ -0,0 +1,13 @@ +package com.simplemobiletools.smsmessenger.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.simplemobiletools.smsmessenger.helpers.refreshMessages + +class SmsStatusDeliveredReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + refreshMessages() + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt new file mode 100644 index 00000000..0b6931d4 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt @@ -0,0 +1,13 @@ +package com.simplemobiletools.smsmessenger.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.simplemobiletools.smsmessenger.helpers.refreshMessages + +class SmsStatusSentReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + refreshMessages() + } +} From 8ac5a1d65e8984d299c15e0d560144053a2fdc7b Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 18:07:00 +0100 Subject: [PATCH 02/20] add a Select All menu item at conversations and messages --- .../smsmessenger/adapters/ConversationsAdapter.kt | 1 + .../simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt | 1 + app/src/main/res/menu/cab_conversations.xml | 4 ++++ app/src/main/res/menu/cab_thread.xml | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index 83e5814f..8b1de0ca 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -56,6 +56,7 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis R.id.cab_dial_number -> dialNumber() R.id.cab_copy_number -> copyNumberToClipboard() R.id.cab_delete -> askConfirmDelete() + R.id.cab_select_all -> selectAll() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index fe750b20..67524104 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -74,6 +74,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList shareText() R.id.cab_select_text -> selectText() R.id.cab_delete -> askConfirmDelete() + R.id.cab_select_all -> selectAll() } } diff --git a/app/src/main/res/menu/cab_conversations.xml b/app/src/main/res/menu/cab_conversations.xml index 113b5be4..19f7a611 100644 --- a/app/src/main/res/menu/cab_conversations.xml +++ b/app/src/main/res/menu/cab_conversations.xml @@ -25,4 +25,8 @@ android:id="@+id/cab_copy_number" android:title="@string/copy_number_to_clipboard" app:showAsAction="never" /> + diff --git a/app/src/main/res/menu/cab_thread.xml b/app/src/main/res/menu/cab_thread.xml index e78aef8f..ed5b8a85 100644 --- a/app/src/main/res/menu/cab_thread.xml +++ b/app/src/main/res/menu/cab_thread.xml @@ -20,4 +20,8 @@ android:icon="@drawable/ic_delete_vector" android:title="@string/delete" app:showAsAction="ifRoom" /> + From de8e42226ddfd594e8e1707900b0a67c0746080f Mon Sep 17 00:00:00 2001 From: Guillaume Date: Fri, 1 Jan 2021 18:19:42 +0100 Subject: [PATCH 03/20] Dutch --- app/src/main/res/values-nl/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f5e7e0a9..bd274539 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -10,9 +10,9 @@ Beantwoorden Teller voor het aantal tekens weergeven Berichten laden… - Sender doesn\'t support replies - Draft - Sending… + Afzender ondersteunt geen antwoorden + Concept + Versturen… Nieuw gesprek From d3494014a6f3963e3867556dbe98d6eceefc2147 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 19:00:40 +0100 Subject: [PATCH 04/20] improving the messages delivery status --- .../smsmessenger/activities/ThreadActivity.kt | 4 ++++ .../smsmessenger/adapters/ThreadAdapter.kt | 11 +++++++++++ .../smsmessenger/extensions/Context.kt | 10 ++++++++++ .../smsmessenger/helpers/Constants.kt | 1 + .../smsmessenger/models/ThreadError.kt | 2 +- .../smsmessenger/models/ThreadSending.kt | 3 +++ .../smsmessenger/receivers/SmsReceiver.kt | 3 ++- .../receivers/SmsStatusDeliveredReceiver.kt | 13 ++++++++++++- .../receivers/SmsStatusSentReceiver.kt | 14 +++++++++++++- app/src/main/res/layout/item_thread_sending.xml | 10 ++++++++++ 10 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/ThreadSending.kt create mode 100644 app/src/main/res/layout/item_thread_sending.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index ebc5d785..5c0fd916 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -515,6 +515,10 @@ class ThreadActivity : SimpleActivity() { items.add(ThreadError(message.id)) } + if (message.type == Telephony.Sms.MESSAGE_TYPE_OUTBOX) { + items.add(ThreadSending(message.id)) + } + if (!message.read) { hadUnreadItems = true markMessageRead(message.id, message.isMMS) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 67524104..11d52421 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -39,6 +39,7 @@ import kotlinx.android.synthetic.main.item_received_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_sent_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_thread_date_time.view.* import kotlinx.android.synthetic.main.item_thread_error.view.* +import kotlinx.android.synthetic.main.item_thread_sending.view.* import kotlinx.android.synthetic.main.item_thread_success.view.* class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller, @@ -96,6 +97,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList R.layout.item_received_message THREAD_SENT_MESSAGE_ERROR -> R.layout.item_thread_error THREAD_SENT_MESSAGE_SUCCESS -> R.layout.item_thread_success + THREAD_SENT_MESSAGE_SENDING -> R.layout.item_thread_sending else -> R.layout.item_sent_message } return createViewHolder(layout, parent) @@ -108,6 +110,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList setupDateTime(itemView, item) is ThreadSuccess -> setupThreadSuccess(itemView) is ThreadError -> setupThreadError(itemView) + is ThreadSending -> setupThreadSending(itemView) else -> setupView(itemView, item as Message) } } @@ -123,6 +126,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList THREAD_RECEIVED_MESSAGE item is ThreadError -> THREAD_SENT_MESSAGE_ERROR item is ThreadSuccess -> THREAD_SENT_MESSAGE_SUCCESS + item is ThreadSending -> THREAD_SENT_MESSAGE_SENDING else -> THREAD_SENT_MESSAGE } } @@ -336,4 +340,11 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList + From 7fedcbd108627fd5b53052cf637d8ed665eb6230 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 20:02:30 +0100 Subject: [PATCH 05/20] leave mms handling on the system, do not mess with it --- app/src/main/AndroidManifest.xml | 2 -- .../smsmessenger/activities/ThreadActivity.kt | 3 --- .../smsmessenger/receivers/MmsStatusSentReceiver.kt | 13 ------------- 3 files changed, 18 deletions(-) delete mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsStatusSentReceiver.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cfc04a2b..2e542b99 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -123,8 +123,6 @@ - - Date: Fri, 1 Jan 2021 20:13:45 +0100 Subject: [PATCH 06/20] properley update message types in the local db too --- .../simplemobiletools/smsmessenger/extensions/Context.kt | 2 +- .../smsmessenger/interfaces/MessagesDao.kt | 3 +++ .../smsmessenger/receivers/SmsStatusDeliveredReceiver.kt | 7 +++++-- .../smsmessenger/receivers/SmsStatusSentReceiver.kt | 8 +++++--- 4 files changed, 14 insertions(+), 6 deletions(-) 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 4b2ad9e4..6aef8cc6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -554,7 +554,7 @@ fun Context.markThreadMessagesUnread(threadId: Long) { } } -fun Context.updateMessageDeliveryStatus(id: Long, status: Int) { +fun Context.updateMessageType(id: Long, status: Int) { val uri = Sms.CONTENT_URI val contentValues = ContentValues().apply { put(Sms.TYPE, status) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt index 629c3dfa..6816f8cf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt @@ -29,6 +29,9 @@ interface MessagesDao { @Query("UPDATE messages SET read = 1 WHERE thread_id = :threadId") fun markThreadRead(threadId: Long) + @Query("UPDATE messages SET type = :type WHERE id = :id") + fun updateType(id: Long, type: Int) + @Query("DELETE FROM messages WHERE id = :id") fun delete(id: Long) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt index 5d13f23d..92b523db 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt @@ -6,7 +6,8 @@ import android.content.Intent import android.net.Uri import android.provider.Telephony import com.simplemobiletools.commons.helpers.ensureBackgroundThread -import com.simplemobiletools.smsmessenger.extensions.updateMessageDeliveryStatus +import com.simplemobiletools.smsmessenger.extensions.messagesDB +import com.simplemobiletools.smsmessenger.extensions.updateMessageType import com.simplemobiletools.smsmessenger.helpers.refreshMessages class SmsStatusDeliveredReceiver : BroadcastReceiver() { @@ -16,7 +17,9 @@ class SmsStatusDeliveredReceiver : BroadcastReceiver() { val uri = Uri.parse(intent.getStringExtra("message_uri")) val id = uri?.lastPathSegment?.toLong() ?: 0L ensureBackgroundThread { - context.updateMessageDeliveryStatus(id, Telephony.Sms.MESSAGE_TYPE_SENT) + val type = Telephony.Sms.MESSAGE_TYPE_SENT + context.updateMessageType(id, type) + context.messagesDB.updateType(id, type) refreshMessages() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt index 9e604ef2..cb2164d5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt @@ -6,7 +6,8 @@ import android.content.Intent import android.net.Uri import android.provider.Telephony import com.simplemobiletools.commons.helpers.ensureBackgroundThread -import com.simplemobiletools.smsmessenger.extensions.updateMessageDeliveryStatus +import com.simplemobiletools.smsmessenger.extensions.messagesDB +import com.simplemobiletools.smsmessenger.extensions.updateMessageType import com.simplemobiletools.smsmessenger.helpers.refreshMessages class SmsStatusSentReceiver : BroadcastReceiver() { @@ -16,8 +17,9 @@ class SmsStatusSentReceiver : BroadcastReceiver() { val uri = Uri.parse(intent.getStringExtra("message_uri")) val id = uri?.lastPathSegment?.toLong() ?: 0L ensureBackgroundThread { - val newStatus = if (intent.extras!!.containsKey("errorCode")) Telephony.Sms.MESSAGE_TYPE_FAILED else Telephony.Sms.MESSAGE_TYPE_OUTBOX - context.updateMessageDeliveryStatus(id, newStatus) + val type = if (intent.extras!!.containsKey("errorCode")) Telephony.Sms.MESSAGE_TYPE_FAILED else Telephony.Sms.MESSAGE_TYPE_OUTBOX + context.updateMessageType(id, type) + context.messagesDB.updateType(id, type) refreshMessages() } } From 71d7085ddbcb99200dce432a55fb6a99d5df53f4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 20:45:10 +0100 Subject: [PATCH 07/20] update the conversation if something changes, avoid recreating it --- .../smsmessenger/activities/ThreadActivity.kt | 10 ++++++++-- .../smsmessenger/adapters/ThreadAdapter.kt | 18 ++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 4d11590b..0da6fe4b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -41,6 +41,7 @@ import com.simplemobiletools.smsmessenger.helpers.* import com.simplemobiletools.smsmessenger.models.* import com.simplemobiletools.smsmessenger.receivers.SmsStatusDeliveredReceiver import com.simplemobiletools.smsmessenger.receivers.SmsStatusSentReceiver +import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_thread.* import kotlinx.android.synthetic.main.item_attachment.view.* import kotlinx.android.synthetic.main.item_selected_contact.view.* @@ -221,8 +222,13 @@ class ThreadActivity : SimpleActivity() { invalidateOptionsMenu() runOnUiThread { - val adapter = ThreadAdapter(this, threadItems, thread_messages_list, thread_messages_fastscroller) {} - thread_messages_list.adapter = adapter + val currAdapter = thread_messages_list.adapter + if (currAdapter == null) { + val adapter = ThreadAdapter(this, threadItems, thread_messages_list, thread_messages_fastscroller) {} + thread_messages_list.adapter = adapter + } else { + (currAdapter as ThreadAdapter).updateMessages(threadItems) + } } SimpleContactsHelper(this).getAvailableContacts(false) { contacts -> diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 11d52421..8feb43af 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -195,10 +195,13 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList) { + val oldHashCode = messages.hashCode() + val newHashCode = newMessages.hashCode() + if (newHashCode != oldHashCode) { + messages = newMessages + notifyDataSetChanged() + recyclerView.scrollToPosition(messages.size-1) } } @@ -347,4 +350,11 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList Date: Fri, 1 Jan 2021 21:02:25 +0100 Subject: [PATCH 08/20] properly place the contact suggestions placeholder --- app/src/main/res/layout/activity_new_conversation.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_new_conversation.xml b/app/src/main/res/layout/activity_new_conversation.xml index f76e807f..aaf95c05 100644 --- a/app/src/main/res/layout/activity_new_conversation.xml +++ b/app/src/main/res/layout/activity_new_conversation.xml @@ -42,7 +42,7 @@ android:id="@+id/no_contacts_placeholder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_below="@+id/message_divider_two" + android:layout_below="@+id/suggestions_scrollview" android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/bigger_margin" android:alpha="0.8" From b3db4c359fb2aeda8a24112fe4e34bd32614be8d Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 21:14:29 +0100 Subject: [PATCH 09/20] adding more strings related to failed message handling --- app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values-el/strings.xml | 2 ++ app/src/main/res/values-es/strings.xml | 2 ++ app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values-id/strings.xml | 2 ++ app/src/main/res/values-ja/strings.xml | 2 ++ app/src/main/res/values-lt/strings.xml | 2 ++ app/src/main/res/values-ml/strings.xml | 2 ++ app/src/main/res/values-nl/strings.xml | 2 ++ app/src/main/res/values-pt/strings.xml | 2 ++ app/src/main/res/values-ru/strings.xml | 2 ++ app/src/main/res/values-sk/strings.xml | 2 ++ app/src/main/res/values-tr/strings.xml | 2 ++ app/src/main/res/values-uk/strings.xml | 2 ++ app/src/main/res/values-zh-rCN/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 16 files changed, 32 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 520c5be2..64f2ad17 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Schreibe eine Nachricht… Nachricht wurde nicht gesendet. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Person hinzufügen Anhang Keine gespeicherten Chats gefunden diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 1132b47a..7f2de4af 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Πληκτρολογήστε ένα μήνυμα… Το μήνυμα δεν έχει σταλεί. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Προσθήκη ατόμου Συνημμένο Δεν βρέθηκαν αποθηκευμένες συνομιλίες diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3066aa3e..fde90ed9 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -3,6 +3,8 @@ Mensajería SMS Escribe un mensaje… El mensaje no se ha enviado. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Añadir persona Archivo adjunto No se han encontrado conversaciones diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 552ff722..fa448665 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Écrivez un message… Le message n\'a pas été envoyé. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Ajouter une personne Pièce jointe Aucune conversation enregistrée n\'a été trouvée diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index b7e12b7c..b0c39ed1 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Ketik pesan… Pesan belum terkirim. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Tambahkan Orang Lampiran Tidak ada percakapan tersimpan yang ditemukan diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index df1b2f23..97bad343 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -3,6 +3,8 @@ ショートメール メッセージを入力してください… 送信されませんでした。 + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent 宛先を追加 添付 保存された会話はありません diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index c02ca2a3..1002441b 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -3,6 +3,8 @@ SMS Siuntiklis Rašykite žinutę… Žinutė neišsiųsta. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Pridėti žmogų Priedas Nebuvo rasta išsaugotų pokalbių diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 5f4eb165..66d0c001 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -3,6 +3,8 @@ SMS മെസഞ്ചർ മെസ്സേജ് ടൈപ്പ് ചെയ്യുക മെസ്സേജ് അയച്ചിട്ടില്ല. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent വ്യക്തിയെ ചേർക്കുക അറ്റാച്ചുമെന്റ് സ്റ്റോർ ചെയ്ത സംഭാഷണങ്ങളൊന്നും കണ്ടെത്തിയില്ല diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index bd274539..89a5896b 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -3,6 +3,8 @@ Berichten Typ een bericht… Bericht niet verzonden. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Persoon toevoegen Bijlage Geen opgeslagen berichten gevonden diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c263baf6..c8f5f8e9 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Escrever uma mensagem… Mensagem não enviada + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Adicionar pessoa Anexo Não foram encontradas conversas diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 513550b8..af5fe1c5 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -3,6 +3,8 @@ Сообщения Введите сообщение… Сообщение не отправлено. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Добавить участника Вложение Нет сохранённых переписок diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 89cc373b..aefc0541 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -3,6 +3,8 @@ SMS správy Zadajte správu… Správa nebola odoslaná. + Správa nebola odoslaná. Dotykom to skúste znova. + Vaša správa pre \'%s\' nebola odoslaná Pridať osobu Príloha Nenašli sa žiadne uložené konverzácie diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 9e42b548..083b41ae 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Bir mesaj yazın… Mesaj gönderilmedi. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Kişi Ekle Ek Kaydedilmiş görüşme bulunamadı diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3b23c2c4..56d1a012 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -3,6 +3,8 @@ Повідомлення Введіть повідомлення… Повідомлення не надіслано. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Додати учасник а Вкладення Немає збережених листувань diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 50d5077c..5c4bfe17 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -3,6 +3,8 @@ 短信 输入一个消息… 消息尚未发送。 + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent 添加人 附件 未找到保存的对话 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 444dd7f8..94f7787a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,8 @@ SMS Messenger Type a message… Message has not been sent. + Message has not been sent. Touch to retry. + Your message to \'%s\' has not been sent Add Person Attachment No stored conversations have been found From 868b6fcd1a60b7cc793db575fb5e312def0f6b4c Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 22:46:30 +0100 Subject: [PATCH 10/20] adding one more failed message sending string --- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-id/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-ml/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 16 files changed, 16 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 64f2ad17..c9ee4677 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -2,6 +2,7 @@ Schlichter SMS Messenger SMS Messenger Schreibe eine Nachricht… + Message not sent Nachricht wurde nicht gesendet. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 7f2de4af..7811f324 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -2,6 +2,7 @@ Απλός SMS Messenger SMS Messenger Πληκτρολογήστε ένα μήνυμα… + Message not sent Το μήνυμα δεν έχει σταλεί. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index fde90ed9..f7fd545c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -2,6 +2,7 @@ Mensajería SMS Simple Mensajería SMS Escribe un mensaje… + Message not sent El mensaje no se ha enviado. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fa448665..557d661f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger SMS Messenger Écrivez un message… + Message not sent Le message n\'a pas été envoyé. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index b0c39ed1..380c7b0c 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger SMS Messenger Ketik pesan… + Message not sent Pesan belum terkirim. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 97bad343..a8307ee9 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -2,6 +2,7 @@ Simple ショートメール ショートメール メッセージを入力してください… + Message not sent 送信されませんでした。 Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 1002441b..fff4291a 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -2,6 +2,7 @@ Paprastas SMS Siuntiklis SMS Siuntiklis Rašykite žinutę… + Message not sent Žinutė neišsiųsta. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 66d0c001..79e1941d 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger SMS മെസഞ്ചർ മെസ്സേജ് ടൈപ്പ് ചെയ്യുക + Message not sent മെസ്സേജ് അയച്ചിട്ടില്ല. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 89a5896b..aeaed84f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -2,6 +2,7 @@ Eenvoudig Berichtenbeheer (SMS) Berichten Typ een bericht… + Message not sent Bericht niet verzonden. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c8f5f8e9..fb70ec68 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger SMS Messenger Escrever uma mensagem… + Message not sent Mensagem não enviada Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index af5fe1c5..feaa23e4 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger Сообщения Введите сообщение… + Message not sent Сообщение не отправлено. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index aefc0541..35f4eb35 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -2,6 +2,7 @@ Jednoduché SMS správy SMS správy Zadajte správu… + Správa nebola odoslaná Správa nebola odoslaná. Správa nebola odoslaná. Dotykom to skúste znova. Vaša správa pre \'%s\' nebola odoslaná diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 083b41ae..e962fc94 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -2,6 +2,7 @@ Basit SMS Messenger SMS Messenger Bir mesaj yazın… + Message not sent Mesaj gönderilmedi. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 56d1a012..63bb829b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger Повідомлення Введіть повідомлення… + Message not sent Повідомлення не надіслано. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5c4bfe17..32e00f8c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -2,6 +2,7 @@ 简易短信 短信 输入一个消息… + Message not sent 消息尚未发送。 Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 94f7787a..47ed21c9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ Simple SMS Messenger SMS Messenger Type a message… + Message not sent Message has not been sent. Message has not been sent. Touch to retry. Your message to \'%s\' has not been sent From 7554bb1f10f4105a050bc405036ef928a7e17411 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 22:52:23 +0100 Subject: [PATCH 11/20] show a notification if a message sending failed --- .../smsmessenger/extensions/Context.kt | 40 ++++++-- .../receivers/SmsStatusSentReceiver.kt | 94 +++++++++++++++++-- 2 files changed, 122 insertions(+), 12 deletions(-) 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 6aef8cc6..b30cf279 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -8,6 +8,7 @@ import android.app.PendingIntent import android.content.ContentValues import android.content.Context import android.content.Intent +import android.database.Cursor import android.graphics.Bitmap import android.media.AudioAttributes import android.media.AudioManager @@ -320,6 +321,28 @@ fun Context.getThreadSnippet(threadId: Long): String { return snippet } +fun Context.getMessageRecipientAddress(messageId: Long): String { + val uri = Sms.CONTENT_URI + val projection = arrayOf( + Sms.ADDRESS + ) + + val selection = "${Sms._ID} = ?" + val selectionArgs = arrayOf(messageId.toString()) + + try { + val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null) + cursor?.use { + if (cursor.moveToFirst()) { + return cursor.getStringValue(Sms.ADDRESS) + } + } + } catch (e: Exception) { + } + + return "" +} + fun Context.getThreadParticipants(threadId: Long, contactsMap: HashMap?): ArrayList { val uri = Uri.parse("${MmsSms.CONTENT_CONVERSATIONS_URI}?simple=true") val projection = arrayOf( @@ -612,18 +635,23 @@ fun Context.getThreadId(addresses: Set): Long { fun Context.showReceivedMessageNotification(address: String, body: String, threadId: Long, bitmap: Bitmap?) { val privateCursor = getMyContactsCursor()?.loadInBackground() ensureBackgroundThread { - var sender = getNameAndPhotoFromPhoneNumber(address).name - if (address == sender) { - val privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) - sender = privateContacts.firstOrNull { it.doesContainPhoneNumber(address) }?.name ?: address - } + val senderName = getNameFromAddress(address, privateCursor) Handler(Looper.getMainLooper()).post { - showMessageNotification(address, body, threadId, bitmap, sender) + showMessageNotification(address, body, threadId, bitmap, senderName) } } } +fun Context.getNameFromAddress(address: String, privateCursor: Cursor?): String { + var sender = getNameAndPhotoFromPhoneNumber(address).name + if (address == sender) { + val privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) + sender = privateContacts.firstOrNull { it.doesContainPhoneNumber(address) }?.name ?: address + } + return sender +} + @SuppressLint("NewApi") fun Context.showMessageNotification(address: String, body: String, threadId: Long, bitmap: Bitmap?, sender: String) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt index cb2164d5..6f7451f6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusSentReceiver.kt @@ -1,13 +1,30 @@ package com.simplemobiletools.smsmessenger.receivers +import android.annotation.SuppressLint +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import android.media.AudioAttributes +import android.media.AudioManager +import android.media.RingtoneManager import android.net.Uri +import android.os.Handler +import android.os.Looper import android.provider.Telephony +import androidx.core.app.NotificationCompat +import com.simplemobiletools.commons.extensions.getMyContactsCursor +import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.helpers.ensureBackgroundThread -import com.simplemobiletools.smsmessenger.extensions.messagesDB -import com.simplemobiletools.smsmessenger.extensions.updateMessageType +import com.simplemobiletools.commons.helpers.isOreoPlus +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.activities.ThreadActivity +import com.simplemobiletools.smsmessenger.extensions.* +import com.simplemobiletools.smsmessenger.helpers.NOTIFICATION_CHANNEL +import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.refreshMessages class SmsStatusSentReceiver : BroadcastReceiver() { @@ -15,13 +32,78 @@ class SmsStatusSentReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.extras?.containsKey("message_uri") == true) { val uri = Uri.parse(intent.getStringExtra("message_uri")) - val id = uri?.lastPathSegment?.toLong() ?: 0L + val messageId = uri?.lastPathSegment?.toLong() ?: 0L ensureBackgroundThread { - val type = if (intent.extras!!.containsKey("errorCode")) Telephony.Sms.MESSAGE_TYPE_FAILED else Telephony.Sms.MESSAGE_TYPE_OUTBOX - context.updateMessageType(id, type) - context.messagesDB.updateType(id, type) + val type = if (intent.extras!!.containsKey("errorCode")) { + showSendingFailedNotification(context, messageId) + Telephony.Sms.MESSAGE_TYPE_FAILED + } else { + Telephony.Sms.MESSAGE_TYPE_OUTBOX + } + context.updateMessageType(messageId, type) + context.messagesDB.updateType(messageId, type) refreshMessages() } } } + + private fun showSendingFailedNotification(context: Context, messageId: Long) { + Handler(Looper.getMainLooper()).post { + val privateCursor = context.getMyContactsCursor()?.loadInBackground() + ensureBackgroundThread { + val address = context.getMessageRecipientAddress(messageId) + val threadId = context.getThreadId(address) + val senderName = context.getNameFromAddress(address, privateCursor) + showNotification(context, senderName, threadId) + } + } + } + + @SuppressLint("NewApi") + private fun showNotification(context: Context, recipientName: String, threadId: Long) { + val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + if (isOreoPlus()) { + val audioAttributes = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_NOTIFICATION) + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION) + .build() + + val name = context.getString(R.string.message_not_sent_short) + val importance = NotificationManager.IMPORTANCE_HIGH + NotificationChannel(NOTIFICATION_CHANNEL, name, importance).apply { + setBypassDnd(false) + enableLights(true) + setSound(soundUri, audioAttributes) + enableVibration(true) + notificationManager.createNotificationChannel(this) + } + } + + val intent = Intent(context, ThreadActivity::class.java).apply { + putExtra(THREAD_ID, threadId) + } + + val pendingIntent = PendingIntent.getActivity(context, threadId.hashCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT) + val summaryText = String.format(context.getString(R.string.message_sending_error), recipientName) + + val largeIcon = SimpleContactsHelper(context).getContactLetterIcon(recipientName) + val builder = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL) + .setContentTitle(context.getString(R.string.message_not_sent_short)) + .setContentText(summaryText) + .setColor(context.config.primaryColor) + .setSmallIcon(R.drawable.ic_messenger) + .setLargeIcon(largeIcon) + .setStyle(NotificationCompat.BigTextStyle().bigText(summaryText)) + .setContentIntent(pendingIntent) + .setPriority(NotificationCompat.PRIORITY_MAX) + .setDefaults(Notification.DEFAULT_LIGHTS) + .setCategory(Notification.CATEGORY_MESSAGE) + .setAutoCancel(true) + .setSound(soundUri, AudioManager.STREAM_NOTIFICATION) + .setChannelId(NOTIFICATION_CHANNEL) + + notificationManager.notify(threadId.hashCode(), builder.build()) + } } From 9e2f3fc62ca003c6221c28d72f38b314fa4aa41e Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 23:02:03 +0100 Subject: [PATCH 12/20] shortening an error string --- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-ml/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c9ee4677..38a13585 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -4,7 +4,7 @@ Schreibe eine Nachricht… Message not sent Nachricht wurde nicht gesendet. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Person hinzufügen Anhang diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 7811f324..7f58da04 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -4,7 +4,7 @@ Πληκτρολογήστε ένα μήνυμα… Message not sent Το μήνυμα δεν έχει σταλεί. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Προσθήκη ατόμου Συνημμένο diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f7fd545c..ab90b31a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -4,7 +4,7 @@ Escribe un mensaje… Message not sent El mensaje no se ha enviado. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Añadir persona Archivo adjunto diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 557d661f..bf761c34 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -4,7 +4,7 @@ Écrivez un message… Message not sent Le message n\'a pas été envoyé. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Ajouter une personne Pièce jointe diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 380c7b0c..610eac16 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -4,7 +4,7 @@ Ketik pesan… Message not sent Pesan belum terkirim. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Tambahkan Orang Lampiran diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index a8307ee9..34a8e0d4 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -4,7 +4,7 @@ メッセージを入力してください… Message not sent 送信されませんでした。 - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent 宛先を追加 添付 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index fff4291a..e3394a90 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -4,7 +4,7 @@ Rašykite žinutę… Message not sent Žinutė neišsiųsta. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Pridėti žmogų Priedas diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 79e1941d..80adfa67 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -4,7 +4,7 @@ മെസ്സേജ് ടൈപ്പ് ചെയ്യുക Message not sent മെസ്സേജ് അയച്ചിട്ടില്ല. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent വ്യക്തിയെ ചേർക്കുക അറ്റാച്ചുമെന്റ് diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index aeaed84f..57a80800 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -4,7 +4,7 @@ Typ een bericht… Message not sent Bericht niet verzonden. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Persoon toevoegen Bijlage diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index fb70ec68..440b59a0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -4,7 +4,7 @@ Escrever uma mensagem… Message not sent Mensagem não enviada - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Adicionar pessoa Anexo diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index feaa23e4..fca2e342 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -4,7 +4,7 @@ Введите сообщение… Message not sent Сообщение не отправлено. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Добавить участника Вложение diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 35f4eb35..27c1e9dd 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -4,7 +4,7 @@ Zadajte správu… Správa nebola odoslaná Správa nebola odoslaná. - Správa nebola odoslaná. Dotykom to skúste znova. + Správa neodoslaná. Dotykom to skúste znova. Vaša správa pre \'%s\' nebola odoslaná Pridať osobu Príloha diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e962fc94..ea86f472 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -4,7 +4,7 @@ Bir mesaj yazın… Message not sent Mesaj gönderilmedi. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Kişi Ekle Ek diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 63bb829b..350dfe8d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -4,7 +4,7 @@ Введіть повідомлення… Message not sent Повідомлення не надіслано. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Додати учасник а Вкладення diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 32e00f8c..837fff73 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,7 +4,7 @@ 输入一个消息… Message not sent 消息尚未发送。 - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent 添加人 附件 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 47ed21c9..55cc0079 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,7 +4,7 @@ Type a message… Message not sent Message has not been sent. - Message has not been sent. Touch to retry. + Not sent. Touch to retry. Your message to \'%s\' has not been sent Add Person Attachment From 08dfd98fdbd4c291b94b13519ae37ddf98a31f8a Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 23:05:56 +0100 Subject: [PATCH 13/20] changing the sending error and making it smaller --- .../simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt | 2 +- app/src/main/res/layout/item_thread_error.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 8feb43af..2da7eae1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -341,7 +341,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList From c3826dc9f21f1d8cdb3538dac3da20b004e639a4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 1 Jan 2021 23:08:10 +0100 Subject: [PATCH 14/20] removing the no longer used Message not sent error --- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-id/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-lt/strings.xml | 1 - app/src/main/res/values-ml/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-pt/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-sk/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 16 files changed, 16 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 38a13585..a861ccd0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Schreibe eine Nachricht… Message not sent - Nachricht wurde nicht gesendet. Not sent. Touch to retry. Your message to \'%s\' has not been sent Person hinzufügen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 7f58da04..b6f10a90 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Πληκτρολογήστε ένα μήνυμα… Message not sent - Το μήνυμα δεν έχει σταλεί. Not sent. Touch to retry. Your message to \'%s\' has not been sent Προσθήκη ατόμου diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ab90b31a..3516f9ed 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -3,7 +3,6 @@ Mensajería SMS Escribe un mensaje… Message not sent - El mensaje no se ha enviado. Not sent. Touch to retry. Your message to \'%s\' has not been sent Añadir persona diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bf761c34..b418260b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Écrivez un message… Message not sent - Le message n\'a pas été envoyé. Not sent. Touch to retry. Your message to \'%s\' has not been sent Ajouter une personne diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 610eac16..df73b0b3 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Ketik pesan… Message not sent - Pesan belum terkirim. Not sent. Touch to retry. Your message to \'%s\' has not been sent Tambahkan Orang diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 34a8e0d4..356e1f19 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -3,7 +3,6 @@ ショートメール メッセージを入力してください… Message not sent - 送信されませんでした。 Not sent. Touch to retry. Your message to \'%s\' has not been sent 宛先を追加 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index e3394a90..1d10f2cf 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -3,7 +3,6 @@ SMS Siuntiklis Rašykite žinutę… Message not sent - Žinutė neišsiųsta. Not sent. Touch to retry. Your message to \'%s\' has not been sent Pridėti žmogų diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 80adfa67..4eafaf66 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -3,7 +3,6 @@ SMS മെസഞ്ചർ മെസ്സേജ് ടൈപ്പ് ചെയ്യുക Message not sent - മെസ്സേജ് അയച്ചിട്ടില്ല. Not sent. Touch to retry. Your message to \'%s\' has not been sent വ്യക്തിയെ ചേർക്കുക diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 57a80800..3d8ef86c 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -3,7 +3,6 @@ Berichten Typ een bericht… Message not sent - Bericht niet verzonden. Not sent. Touch to retry. Your message to \'%s\' has not been sent Persoon toevoegen diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 440b59a0..a2c51645 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Escrever uma mensagem… Message not sent - Mensagem não enviada Not sent. Touch to retry. Your message to \'%s\' has not been sent Adicionar pessoa diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index fca2e342..b41f8a74 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -3,7 +3,6 @@ Сообщения Введите сообщение… Message not sent - Сообщение не отправлено. Not sent. Touch to retry. Your message to \'%s\' has not been sent Добавить участника diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 27c1e9dd..54a8271f 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -3,7 +3,6 @@ SMS správy Zadajte správu… Správa nebola odoslaná - Správa nebola odoslaná. Správa neodoslaná. Dotykom to skúste znova. Vaša správa pre \'%s\' nebola odoslaná Pridať osobu diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index ea86f472..3f55992f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Bir mesaj yazın… Message not sent - Mesaj gönderilmedi. Not sent. Touch to retry. Your message to \'%s\' has not been sent Kişi Ekle diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 350dfe8d..338bb279 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -3,7 +3,6 @@ Повідомлення Введіть повідомлення… Message not sent - Повідомлення не надіслано. Not sent. Touch to retry. Your message to \'%s\' has not been sent Додати учасник а diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 837fff73..2abf8998 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -3,7 +3,6 @@ 短信 输入一个消息… Message not sent - 消息尚未发送。 Not sent. Touch to retry. Your message to \'%s\' has not been sent 添加人 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 55cc0079..c40c26d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,7 +3,6 @@ SMS Messenger Type a message… Message not sent - Message has not been sent. Not sent. Touch to retry. Your message to \'%s\' has not been sent Add Person From a100ddb2903bf42601b2d60e7a991bd6f6acd885 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 2 Jan 2021 10:25:54 +0100 Subject: [PATCH 15/20] allow clicking the message failed label --- .../smsmessenger/activities/ThreadActivity.kt | 11 ++++++++--- .../smsmessenger/adapters/ThreadAdapter.kt | 18 +++++++++++++----- .../smsmessenger/models/ThreadError.kt | 2 +- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 0da6fe4b..c6201b5a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -224,8 +224,13 @@ class ThreadActivity : SimpleActivity() { runOnUiThread { val currAdapter = thread_messages_list.adapter if (currAdapter == null) { - val adapter = ThreadAdapter(this, threadItems, thread_messages_list, thread_messages_fastscroller) {} - thread_messages_list.adapter = adapter + ThreadAdapter(this, threadItems, thread_messages_list, thread_messages_fastscroller) { + (it as? ThreadError)?.apply { + thread_type_message.setText(it.messageText) + } + }.apply { + thread_messages_list.adapter = this + } } else { (currAdapter as ThreadAdapter).updateMessages(threadItems) } @@ -517,7 +522,7 @@ class ThreadActivity : SimpleActivity() { items.add(message) if (message.type == Telephony.Sms.MESSAGE_TYPE_FAILED) { - items.add(ThreadError(message.id)) + items.add(ThreadError(message.id, message.body)) } if (message.type == Telephony.Sms.MESSAGE_TYPE_OUTBOX) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 2da7eae1..8c6ae60b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -105,7 +105,9 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList + val isClickable = item is ThreadError || item is Message + val isLongClickable = item is Message + holder.bindView(item, isClickable, isLongClickable) { itemView, layoutPosition -> when (item) { is ThreadDateTime -> setupDateTime(itemView, item) is ThreadSuccess -> setupThreadSuccess(itemView) @@ -201,7 +203,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList Date: Sat, 2 Jan 2021 10:41:13 +0100 Subject: [PATCH 16/20] refresh the conversation manually in 2 seconds, if nothing happens meanwhile --- .../smsmessenger/activities/ThreadActivity.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index c6201b5a..881af882 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -8,6 +8,7 @@ import android.graphics.drawable.Drawable import android.media.MediaMetadataRetriever import android.net.Uri import android.os.Bundle +import android.os.Handler import android.provider.Telephony import android.telephony.SubscriptionManager import android.text.TextUtils @@ -56,6 +57,7 @@ class ThreadActivity : SimpleActivity() { private var threadId = 0L private var currentSIMCardIndex = 0 private var isActivityVisible = false + private var refreshedSinceSent = false private var threadItems = ArrayList() private var bus: EventBus? = null private var participants = ArrayList() @@ -660,11 +662,18 @@ class ThreadActivity : SimpleActivity() { transaction.setExplicitBroadcastForSentSms(smsSentIntent) transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent) + refreshedSinceSent = false transaction.sendNewMessage(message, threadId) thread_type_message.setText("") attachmentUris.clear() thread_attachments_holder.beGone() thread_attachments_wrapper.removeAllViews() + + Handler().postDelayed({ + if (!refreshedSinceSent) { + refreshMessages() + } + }, 2000) } catch (e: Exception) { showErrorToast(e) } catch (e: Error) { @@ -729,6 +738,7 @@ class ThreadActivity : SimpleActivity() { @SuppressLint("MissingPermission") @Subscribe(threadMode = ThreadMode.ASYNC) fun refreshMessages(event: Events.RefreshMessages) { + refreshedSinceSent = true if (isActivityVisible) { notificationManager.cancel(threadId.hashCode()) } From da4f476bcedf635ebe27fe5a3ace46189420ba07 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 2 Jan 2021 10:49:15 +0100 Subject: [PATCH 17/20] update commons to 5.32.20 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2d71ade9..ba5f9adc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.32.19' + implementation 'com.simplemobiletools:commons:5.32.20' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' From d02df0a1a227952e844bb92748aca0c11129af56 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 2 Jan 2021 11:24:56 +0100 Subject: [PATCH 18/20] improve message marking after delivery to avoid glitching --- .../smsmessenger/interfaces/MessagesDao.kt | 2 +- .../receivers/SmsStatusDeliveredReceiver.kt | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt index 6816f8cf..c3dc8d71 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/MessagesDao.kt @@ -30,7 +30,7 @@ interface MessagesDao { fun markThreadRead(threadId: Long) @Query("UPDATE messages SET type = :type WHERE id = :id") - fun updateType(id: Long, type: Int) + fun updateType(id: Long, type: Int): Int @Query("DELETE FROM messages WHERE id = :id") fun delete(id: Long) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt index 92b523db..b7aa5593 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsStatusDeliveredReceiver.kt @@ -4,6 +4,8 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Handler +import android.os.Looper import android.provider.Telephony import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.extensions.messagesDB @@ -15,11 +17,19 @@ class SmsStatusDeliveredReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.extras?.containsKey("message_uri") == true) { val uri = Uri.parse(intent.getStringExtra("message_uri")) - val id = uri?.lastPathSegment?.toLong() ?: 0L + val messageId = uri?.lastPathSegment?.toLong() ?: 0L ensureBackgroundThread { val type = Telephony.Sms.MESSAGE_TYPE_SENT - context.updateMessageType(id, type) - context.messagesDB.updateType(id, type) + context.updateMessageType(messageId, type) + val updated = context.messagesDB.updateType(messageId, type) + if (updated == 0) { + Handler(Looper.getMainLooper()).postDelayed({ + ensureBackgroundThread { + context.messagesDB.updateType(messageId, type) + } + }, 2000) + } + refreshMessages() } } From c0b2e415caeacee35d3b2ac0b4637b886bea8517 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 2 Jan 2021 11:28:37 +0100 Subject: [PATCH 19/20] update version to 5.8.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ba5f9adc..91ee3631 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 23 - versionName "5.7.0" + versionCode 25 + versionName "5.8.0" setProperty("archivesBaseName", "sms-messenger") } From 8943238533f4e6d42063c585754430a73e5630ed Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 2 Jan 2021 11:28:45 +0100 Subject: [PATCH 20/20] updating changelog --- CHANGELOG.md | 8 ++++++++ fastlane/metadata/android/en-US/changelogs/25.txt | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/25.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index dd67cdce..6830fd49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 5.8.0 *(2021-01-02)* +---------------------------- + + * Improved delivery reports, show a notification at failed messages + * Allow resending failed messages with tapping them + * Added multiple dual-SIM related improvements + * Many other UX, stability, performance and translation improvements + Version 5.7.0 *(2020-12-30)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/25.txt b/fastlane/metadata/android/en-US/changelogs/25.txt new file mode 100644 index 00000000..dcb4ce35 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/25.txt @@ -0,0 +1,4 @@ + * Improved delivery reports, show a notification at failed messages + * Allow resending failed messages with tapping them + * Added multiple dual-SIM related improvements + * Many other UX, stability, performance and translation improvements