From 2990f3be6ecb73d4a03154c76904828e619bd2cf Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 16 Feb 2021 11:34:19 +0100 Subject: [PATCH] adding message Id to search results --- .../smsmessenger/activities/SearchActivity.kt | 81 ++++++++++--------- .../smsmessenger/models/SearchResult.kt | 2 +- 2 files changed, 45 insertions(+), 38 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt index c75b39c5..50770f67 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt @@ -19,6 +19,8 @@ import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.messagesDB import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_TITLE +import com.simplemobiletools.smsmessenger.models.Conversation +import com.simplemobiletools.smsmessenger.models.Message import com.simplemobiletools.smsmessenger.models.SearchResult import kotlinx.android.synthetic.main.activity_search.* @@ -89,44 +91,8 @@ class SearchActivity : SimpleActivity() { val messages = messagesDB.getMessagesWithText(searchQuery) val conversations = conversationsDB.getConversationsWithText(searchQuery) if (text == mLastSearchedText) { - val searchResults = ArrayList() - conversations.forEach { conversation -> - val date = conversation.date.formatDateOrTime(this, true, true) - val searchResult = SearchResult(conversation.title, conversation.phoneNumber, date, conversation.threadId, conversation.photoUri, conversation.isGroupConversation) - searchResults.add(searchResult) - } + showSearchResults(messages, conversations, text) - messages.forEach { message -> - var recipient = message.senderName - if (recipient.isEmpty() && message.participants.isNotEmpty()) { - val participantNames = message.participants.map { it.name } - recipient = TextUtils.join(", ", participantNames) - } - - val date = message.date.formatDateOrTime(this, true, true) - val searchResult = SearchResult(recipient, message.body, date, message.threadId, message.senderPhotoUri, false) - searchResults.add(searchResult) - } - - runOnUiThread { - search_results_list.beVisibleIf(searchResults.isNotEmpty()) - search_placeholder.beVisibleIf(searchResults.isEmpty()) - - val currAdapter = search_results_list.adapter - if (currAdapter == null) { - SearchResultsAdapter(this, searchResults, search_results_list, text) { - Intent(this, ThreadActivity::class.java).apply { - putExtra(THREAD_ID, (it as SearchResult).threadId) - putExtra(THREAD_TITLE, it.title) - startActivity(this) - } - }.apply { - search_results_list.adapter = this - } - } else { - (currAdapter as SearchResultsAdapter).updateItems(searchResults, text) - } - } } } } else { @@ -134,4 +100,45 @@ class SearchActivity : SimpleActivity() { search_results_list.beGone() } } + + private fun showSearchResults(messages: List, conversations: List, searchedText: String) { + val searchResults = ArrayList() + conversations.forEach { conversation -> + val date = conversation.date.formatDateOrTime(this, true, true) + val searchResult = SearchResult(-1, conversation.title, conversation.phoneNumber, date, conversation.threadId, conversation.photoUri) + searchResults.add(searchResult) + } + + messages.forEach { message -> + var recipient = message.senderName + if (recipient.isEmpty() && message.participants.isNotEmpty()) { + val participantNames = message.participants.map { it.name } + recipient = TextUtils.join(", ", participantNames) + } + + val date = message.date.formatDateOrTime(this, true, true) + val searchResult = SearchResult(message.id, recipient, message.body, date, message.threadId, message.senderPhotoUri) + searchResults.add(searchResult) + } + + runOnUiThread { + search_results_list.beVisibleIf(searchResults.isNotEmpty()) + search_placeholder.beVisibleIf(searchResults.isEmpty()) + + val currAdapter = search_results_list.adapter + if (currAdapter == null) { + SearchResultsAdapter(this, searchResults, search_results_list, searchedText) { + Intent(this, ThreadActivity::class.java).apply { + putExtra(THREAD_ID, (it as SearchResult).threadId) + putExtra(THREAD_TITLE, it.title) + startActivity(this) + } + }.apply { + search_results_list.adapter = this + } + } else { + (currAdapter as SearchResultsAdapter).updateItems(searchResults, searchedText) + } + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/SearchResult.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/SearchResult.kt index 2362a544..e6fd47ed 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/SearchResult.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/SearchResult.kt @@ -1,3 +1,3 @@ package com.simplemobiletools.smsmessenger.models -data class SearchResult(val title: String, val snippet: String, val date: String, val threadId: Long, var photoUri: String, var isGroupConversation: Boolean) +data class SearchResult(val messageId: Long, val title: String, val snippet: String, val date: String, val threadId: Long, var photoUri: String)