From 83cdf0f623dda257743c8f7120ebf362add8d363 Mon Sep 17 00:00:00 2001 From: Naveen Date: Tue, 28 Feb 2023 18:58:10 +0530 Subject: [PATCH] Avoid resetting conversation name --- .../smsmessenger/activities/MainActivity.kt | 6 ++---- .../smsmessenger/extensions/Context.kt | 14 +++++++++++++- .../smsmessenger/receivers/MmsReceiver.kt | 2 +- .../smsmessenger/receivers/SmsReceiver.kt | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt index 37764fcd..a432afb5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -307,10 +307,8 @@ class MainActivity : SimpleActivity() { } if (conv != null) { val lastModified = maxOf(cachedConv.date, conv.date) - val usesCustomTitle = cachedConv.usesCustomTitle - val title = if (usesCustomTitle) cachedConv.title else conv.title - val conversation = conv.copy(date = lastModified, title = title, usesCustomTitle = usesCustomTitle) - conversationsDB.insertOrUpdate(conversation) + val conversation = conv.copy(date = lastModified) + insertOrUpdateConversation(conversation) } } 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 6ed5c9ea..163f99ed 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -824,7 +824,7 @@ fun Context.updateLastConversationMessage(threadId: Long) { try { contentResolver.delete(uri, selection, selectionArgs) val newConversation = getConversations(threadId)[0] - conversationsDB.insertOrUpdate(newConversation) + insertOrUpdateConversation(newConversation) } catch (e: Exception) { } } @@ -878,6 +878,18 @@ fun Context.subscriptionManagerCompat(): SubscriptionManager { return getSystemService(SubscriptionManager::class.java) } +fun Context.insertOrUpdateConversation(conversation: Conversation) { + val cachedConv = conversationsDB.getConversationWithThreadId(conversation.threadId) + val updatedConv = if (cachedConv != null) { + val usesCustomTitle = cachedConv.usesCustomTitle + val title = if (usesCustomTitle) cachedConv.title else conversation.title + conversation.copy(title = title, usesCustomTitle = usesCustomTitle) + } else { + conversation + } + conversationsDB.insertOrUpdate(updatedConv) +} + fun Context.renameConversation(conversation: Conversation, newTitle: String): Conversation { val updatedConv = conversation.copy(title = newTitle, usesCustomTitle = true) try { 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 8c2acf0b..dbf08b8f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -41,7 +41,7 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { context.showReceivedMessageNotification(address, mms.body, mms.threadId, glideBitmap) val conversation = context.getConversations(mms.threadId).firstOrNull() ?: return@post ensureBackgroundThread { - context.conversationsDB.insertOrUpdate(conversation) + context.insertOrUpdateConversation(conversation) context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) refreshMessages() } 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 bded30f1..089945e6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -67,7 +67,7 @@ class SmsReceiver : BroadcastReceiver() { val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread try { - context.conversationsDB.insertOrUpdate(conversation) + context.insertOrUpdateConversation(conversation) } catch (ignored: Exception) { }