From 2f6ca409536ae6efe52cecdcf2a253874d4def08 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 21 Dec 2020 21:13:32 +0100 Subject: [PATCH] compare cached messages with new ones asap, continue only if necessary --- .../smsmessenger/activities/ThreadActivity.kt | 9 +++++++++ .../simplemobiletools/smsmessenger/extensions/Context.kt | 4 ---- 2 files changed, 9 insertions(+), 4 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 1fd37ae1..3faff799 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -104,7 +104,12 @@ class ThreadActivity : SimpleActivity() { private fun setupThread() { val privateCursor = getMyContactsCursor()?.loadInBackground() ensureBackgroundThread { + val cachedMessagesCode = messages.hashCode() messages = getMessages(threadId) + if (messages.hashCode() == cachedMessagesCode) { + return@ensureBackgroundThread + } + setupParticipants() // check if no participant came from a privately stored contact in Simple Contacts @@ -139,6 +144,10 @@ class ThreadActivity : SimpleActivity() { participants.add(contact) } + messages.chunked(30).forEach { currentMessages -> + messagesDB.insertMessages(*currentMessages.toTypedArray()) + } + setupAttachmentSizes() setupAdapter() runOnUiThread { 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 e5eea565..230bc686 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -105,10 +105,6 @@ fun Context.getMessages(threadId: Long): ArrayList { messages = messages.filter { it.participants.isNotEmpty() } .sortedWith(compareBy { it.date }.thenBy { it.id }).toMutableList() as ArrayList - messages.chunked(30).forEach { currentMessages -> - messagesDB.insertMessages(*currentMessages.toTypedArray()) - } - return messages }