mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-02-17 04:00:35 +01:00
Fix scheduled message glitch and clarify logic
This commit is contained in:
parent
89f378b973
commit
4295e5cf55
@ -433,13 +433,13 @@ class ThreadActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
updateLastConversationMessage(threadId)
|
updateLastConversationMessage(threadId)
|
||||||
|
|
||||||
|
// move all scheduled messages to a temporary thread when there are no real messages left
|
||||||
if (messages.isNotEmpty() && messages.all { it.isScheduled }) {
|
if (messages.isNotEmpty() && messages.all { it.isScheduled }) {
|
||||||
// move all scheduled messages to a temporary thread as there are no real messages left
|
val scheduledMessage = messages.last()
|
||||||
val message = messagesToRemove.last()
|
val fakeThreadId = generateRandomId()
|
||||||
val newThreadId = generateRandomId()
|
createTemporaryThread(scheduledMessage, fakeThreadId)
|
||||||
createTemporaryThread(message, newThreadId)
|
updateScheduledMessagesThreadId(messages, fakeThreadId)
|
||||||
updateScheduledMessagesThreadId(messagesToRemove, newThreadId)
|
threadId = fakeThreadId
|
||||||
threadId = newThreadId
|
|
||||||
}
|
}
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
}
|
}
|
||||||
@ -1078,7 +1078,7 @@ class ThreadActivity : SimpleActivity() {
|
|||||||
val conversation = conversationsDB.getConversationWithThreadId(threadId)
|
val conversation = conversationsDB.getConversationWithThreadId(threadId)
|
||||||
if (conversation != null) {
|
if (conversation != null) {
|
||||||
val nowSeconds = (System.currentTimeMillis() / 1000).toInt()
|
val nowSeconds = (System.currentTimeMillis() / 1000).toInt()
|
||||||
conversationsDB.insertOrUpdate(conversation.copy(date = nowSeconds))
|
conversationsDB.insertOrUpdate(conversation.copy(date = nowSeconds, snippet = message.body))
|
||||||
}
|
}
|
||||||
scheduleMessage(message)
|
scheduleMessage(message)
|
||||||
insertOrUpdateMessage(message)
|
insertOrUpdateMessage(message)
|
||||||
@ -1280,17 +1280,21 @@ class ThreadActivity : SimpleActivity() {
|
|||||||
|
|
||||||
val lastMaxId = messages.filterNot { it.isScheduled }.maxByOrNull { it.id }?.id ?: 0L
|
val lastMaxId = messages.filterNot { it.isScheduled }.maxByOrNull { it.id }?.id ?: 0L
|
||||||
val newThreadId = getThreadId(participants.getAddresses().toSet())
|
val newThreadId = getThreadId(participants.getAddresses().toSet())
|
||||||
val newMessages = getMessages(newThreadId, false)
|
val newMessages = getMessages(newThreadId, getImageResolutions = true, includeScheduledMessages = false)
|
||||||
messages = if (messages.all { it.isScheduled } && newMessages.isNotEmpty()) {
|
|
||||||
threadId = newThreadId
|
if (messages.isNotEmpty() && messages.all { it.isScheduled } && newMessages.isNotEmpty()) {
|
||||||
// update scheduled messages with real thread id
|
// update scheduled messages with real thread id
|
||||||
updateScheduledMessagesThreadId(messages, newThreadId)
|
threadId = newThreadId
|
||||||
getMessages(newThreadId, true)
|
updateScheduledMessagesThreadId(messages = messages.filter { it.threadId != threadId }, threadId)
|
||||||
} else {
|
|
||||||
getMessages(threadId, true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
messages.filter { !it.isReceivedMessage() && it.id > lastMaxId }.forEach { latestMessage ->
|
messages = newMessages.apply {
|
||||||
|
val scheduledMessages = messagesDB.getScheduledThreadMessages(threadId)
|
||||||
|
.filterNot { it.isScheduled && it.millis() < System.currentTimeMillis() }
|
||||||
|
addAll(scheduledMessages)
|
||||||
|
}
|
||||||
|
|
||||||
|
messages.filter { !it.isScheduled && !it.isReceivedMessage() && it.id > lastMaxId }.forEach { latestMessage ->
|
||||||
maybeUpdateMessageSubId(latestMessage)
|
maybeUpdateMessageSubId(latestMessage)
|
||||||
messagesDB.insertOrIgnore(latestMessage)
|
messagesDB.insertOrIgnore(latestMessage)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user