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 a432afb5..4cb54d99 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -298,6 +298,7 @@ class MainActivity : SimpleActivity() { .forEach { message -> messagesDB.insertOrUpdate(message.copy(threadId = newConversation.threadId)) } + insertOrUpdateConversation(newConversation, cachedConversation) } } 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 c94cfd4e..eb0da9aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -494,7 +494,7 @@ class ThreadActivity : SimpleActivity() { if (messages.isNotEmpty() && messages.all { it.isScheduled }) { val scheduledMessage = messages.last() val fakeThreadId = generateRandomId() - createTemporaryThread(scheduledMessage, fakeThreadId) + createTemporaryThread(scheduledMessage, fakeThreadId, conversation) updateScheduledMessagesThreadId(messages, fakeThreadId) threadId = fakeThreadId } @@ -1198,7 +1198,7 @@ class ThreadActivity : SimpleActivity() { if (messages.isEmpty()) { // create a temporary thread until a real message is sent threadId = message.threadId - createTemporaryThread(message, message.threadId) + createTemporaryThread(message, message.threadId, conversation) } val conversation = conversationsDB.getConversationWithThreadId(threadId) if (conversation != null) { 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 163f99ed..2aa8604b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -878,11 +878,17 @@ fun Context.subscriptionManagerCompat(): SubscriptionManager { return getSystemService(SubscriptionManager::class.java) } -fun Context.insertOrUpdateConversation(conversation: Conversation) { - val cachedConv = conversationsDB.getConversationWithThreadId(conversation.threadId) +fun Context.insertOrUpdateConversation( + conversation: Conversation, + cachedConv: Conversation? = conversationsDB.getConversationWithThreadId(conversation.threadId) +) { val updatedConv = if (cachedConv != null) { val usesCustomTitle = cachedConv.usesCustomTitle - val title = if (usesCustomTitle) cachedConv.title else conversation.title + val title = if (usesCustomTitle) { + cachedConv.title + } else { + conversation.title + } conversation.copy(title = title, usesCustomTitle = usesCustomTitle) } else { conversation @@ -900,21 +906,27 @@ fun Context.renameConversation(conversation: Conversation, newTitle: String): Co return updatedConv } -fun Context.createTemporaryThread(message: Message, threadId: Long = generateRandomId()) { +fun Context.createTemporaryThread(message: Message, threadId: Long = generateRandomId(), cachedConv: Conversation?) { val simpleContactHelper = SimpleContactsHelper(this) val addresses = message.participants.getAddresses() val photoUri = if (addresses.size == 1) simpleContactHelper.getPhotoUriFromPhoneNumber(addresses.first()) else "" + val title = if (cachedConv != null && cachedConv.usesCustomTitle) { + cachedConv.title + } else { + message.participants.getThreadTitle() + } val conversation = Conversation( threadId = threadId, snippet = message.body, date = message.date, read = true, - title = message.participants.getThreadTitle(), + title = title, photoUri = photoUri, isGroupConversation = addresses.size > 1, phoneNumber = addresses.first(), - isScheduled = true + isScheduled = true, + usesCustomTitle = cachedConv?.usesCustomTitle == true ) try { conversationsDB.insertOrUpdate(conversation)