Avoid resetting conversation name in tmp threads

This commit is contained in:
Naveen 2023-02-28 19:10:11 +05:30
parent 83cdf0f623
commit c94b8852cd
3 changed files with 21 additions and 8 deletions

View File

@ -298,6 +298,7 @@ class MainActivity : SimpleActivity() {
.forEach { message ->
messagesDB.insertOrUpdate(message.copy(threadId = newConversation.threadId))
}
insertOrUpdateConversation(newConversation, cachedConversation)
}
}

View File

@ -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) {

View File

@ -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)