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 }