From 2b3df2719b6d6f24adc850471f85ec67683135c7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 30 May 2020 18:55:57 +0200 Subject: [PATCH] fix #8, load some cached messages instantly --- .../smsmessenger/activities/MainActivity.kt | 45 +++++++++++++------ .../smsmessenger/extensions/ArrayList.kt | 3 ++ .../smsmessenger/extensions/Context.kt | 1 - .../smsmessenger/models/Conversation.kt | 6 ++- 4 files changed, 39 insertions(+), 16 deletions(-) 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 834224a0..ba716942 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -19,6 +19,7 @@ import com.simplemobiletools.smsmessenger.BuildConfig import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.adapters.ConversationsAdapter import com.simplemobiletools.smsmessenger.extensions.config +import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.getConversations import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_TITLE @@ -144,8 +145,29 @@ class MainActivity : SimpleActivity() { private fun initMessenger() { storeStateVariables() - val privateCursor = getMyContactsContentProviderCursorLoader().loadInBackground() + getCachedConversations() + no_conversations_placeholder_2.setOnClickListener { + launchNewConversation() + } + + conversations_fab.setOnClickListener { + launchNewConversation() + } + } + + private fun getCachedConversations() { + ensureBackgroundThread { + val conversations = conversationsDB.getAll().toMutableList() as ArrayList + runOnUiThread { + setupConversations(conversations) + getNewConversations() + } + } + } + + private fun getNewConversations() { + val privateCursor = getMyContactsContentProviderCursorLoader().loadInBackground() ensureBackgroundThread { val conversations = getConversations() @@ -161,24 +183,19 @@ class MainActivity : SimpleActivity() { } runOnUiThread { - val hasConversations = conversations.isNotEmpty() - conversations_list.beVisibleIf(hasConversations) - no_conversations_placeholder.beVisibleIf(!hasConversations) - no_conversations_placeholder_2.beVisibleIf(!hasConversations) - updateConversations(conversations) + setupConversations(conversations) } - } - no_conversations_placeholder_2.setOnClickListener { - launchNewConversation() - } - - conversations_fab.setOnClickListener { - launchNewConversation() + conversationsDB.insertAll(conversations) } } - private fun updateConversations(conversations: ArrayList) { + private fun setupConversations(conversations: ArrayList) { + val hasConversations = conversations.isNotEmpty() + conversations_list.beVisibleIf(hasConversations) + no_conversations_placeholder.beVisibleIf(!hasConversations) + no_conversations_placeholder_2.beVisibleIf(!hasConversations) + val currAdapter = conversations_list.adapter if (currAdapter == null) { ConversationsAdapter(this, conversations, conversations_list, conversations_fastscroller) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/ArrayList.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/ArrayList.kt index dfaf3202..0ff90913 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/ArrayList.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/ArrayList.kt @@ -2,5 +2,8 @@ package com.simplemobiletools.smsmessenger.extensions import android.text.TextUtils import com.simplemobiletools.commons.models.SimpleContact +import com.simplemobiletools.smsmessenger.models.Conversation fun ArrayList.getThreadTitle() = TextUtils.join(", ", map { it.name }.toTypedArray()) + +fun ArrayList.getHashToCompare() = map { it.getStringToCompare() }.hashCode() 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 855e6c16..164c3328 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -227,7 +227,6 @@ fun Context.getConversations(): ArrayList { } conversations.sortByDescending { it.date } - conversationsDB.insertAll(conversations) return conversations } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt index 6d69dbf9..f1636025 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt @@ -16,4 +16,8 @@ data class Conversation( @ColumnInfo(name = "photo_uri") var photoUri: String, @ColumnInfo(name = "is_group_conversation") var isGroupConversation: Boolean, @ColumnInfo(name = "phone_number") var phoneNumber: String -) +) { + fun getStringToCompare(): String { + return copy(id = 0).toString() + } +}