fix search

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-13 11:25:25 +02:00 committed by Marcel Hibbe
parent 853f173740
commit 8231e6b35c
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 28 additions and 20 deletions

View File

@ -210,6 +210,7 @@ class ConversationsListActivity :
private var conversationItemsWithHeader: MutableList<AbstractFlexibleItem<*>> = ArrayList() private var conversationItemsWithHeader: MutableList<AbstractFlexibleItem<*>> = ArrayList()
private val searchableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList() private val searchableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
private var filterableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList() private var filterableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
private var nearFutureEventConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
private var searchItem: MenuItem? = null private var searchItem: MenuItem? = null
private var chooseAccountItem: MenuItem? = null private var chooseAccountItem: MenuItem? = null
private var searchView: SearchView? = null private var searchView: SearchView? = null
@ -519,22 +520,28 @@ class ConversationsListActivity :
// Update Conversations // Update Conversations
conversationItems.clear() conversationItems.clear()
conversationItemsWithHeader.clear() conversationItemsWithHeader.clear()
searchableConversationItems.clear() nearFutureEventConversationItems.clear()
for (conversation in list) { for (conversation in list) {
if (!futureEvent(conversation)) { if (!futureEvent(conversation)) {
addToConversationItems(conversation) addToNearFutureEventConversationItems(conversation)
} }
addToSearchableConversationItems(conversation) addToConversationItems(conversation)
} }
sortConversations(conversationItems) sortConversations(conversationItems)
sortConversations(conversationItemsWithHeader) sortConversations(conversationItemsWithHeader)
// Filter Conversations if (!hasFilterEnabled() && searchBehaviorSubject.value == false) {
if (!hasFilterEnabled()) filterableConversationItems = conversationItems adapter?.updateDataSet(nearFutureEventConversationItems, false)
filterConversation() } else {
adapter?.updateDataSet(filterableConversationItems, false) // Filter Conversations
if (!hasFilterEnabled()) {
filterableConversationItems = conversationItems
}
filterConversation()
adapter?.updateDataSet(filterableConversationItems, false)
}
Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong()) Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong())
// Fetch Open Conversations // Fetch Open Conversations
@ -565,14 +572,9 @@ class ConversationsListActivity :
AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS
} }
private fun addToSearchableConversationItems(conversation: ConversationModel) { private fun addToNearFutureEventConversationItems(conversation: ConversationModel) {
val headerTitle = resources!!.getString(R.string.conversations) val conversationItem = ConversationItem(conversation, currentUser!!, this, null, viewThemeUtils)
val headerItem = callHeaderItems.getOrPut(headerTitle) { nearFutureEventConversationItems.add(conversationItem)
GenericTextHeaderItem(headerTitle, viewThemeUtils)
}
val conversationItem = ConversationItem(conversation, currentUser!!, this, headerItem, viewThemeUtils)
searchableConversationItems.add(conversationItem)
} }
fun filterConversation() { fun filterConversation() {
@ -862,15 +864,19 @@ class ConversationsListActivity :
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
adapter?.setHeadersShown(false) adapter?.setHeadersShown(false)
searchBehaviorSubject.onNext(false)
if (!hasFilterEnabled()) filterableConversationItems = conversationItemsWithHeader if (!hasFilterEnabled()) filterableConversationItems = conversationItemsWithHeader
adapter?.updateDataSet(filterableConversationItems, false) if (!hasFilterEnabled()) {
adapter?.updateDataSet(nearFutureEventConversationItems, false)
} else {
filterableConversationItems = conversationItems
}
adapter?.hideAllHeaders() adapter?.hideAllHeaders()
if (searchHelper != null) { if (searchHelper != null) {
// cancel any pending searches // cancel any pending searches
searchHelper!!.cancelSearch() searchHelper!!.cancelSearch()
} }
binding.swipeRefreshLayoutView.isRefreshing = false binding.swipeRefreshLayoutView.isRefreshing = false
searchBehaviorSubject.onNext(false)
binding.swipeRefreshLayoutView.isEnabled = true binding.swipeRefreshLayoutView.isEnabled = true
searchView!!.onActionViewCollapsed() searchView!!.onActionViewCollapsed()
@ -1094,6 +1100,8 @@ class ConversationsListActivity :
} }
private fun fetchOpenConversations(apiVersion: Int) { private fun fetchOpenConversations(apiVersion: Int) {
searchableConversationItems.clear()
searchableConversationItems.addAll(conversationItemsWithHeader)
if (hasSpreedFeatureCapability( if (hasSpreedFeatureCapability(
currentUser!!.capabilities!!.spreedCapability!!, currentUser!!.capabilities!!.spreedCapability!!,
SpreedFeatures.LISTABLE_ROOMS SpreedFeatures.LISTABLE_ROOMS

View File

@ -278,10 +278,10 @@ object Migrations {
try { try {
db.execSQL( db.execSQL(
"ALTER TABLE Conversations " + "ALTER TABLE Conversations " +
"ADD COLUMN objectId TEXT ;" "ADD COLUMN objectId TEXT NOT NULL DEFAULT '';"
) )
} catch (e: Exception) { } catch (e: SQLException) {
Log.i("Migrations", "Something went wrong when adding column referenceId to table ChatMessages") Log.i("Migrations", "Something went wrong when adding column objectId to table Conversations")
} }
} }