get filter states before getting conversations for adapter

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-20 15:38:01 +02:00 committed by backportbot[bot]
parent 84e3615fc5
commit 0c147e730a

View File

@ -114,6 +114,9 @@ import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
import com.nextcloud.talk.ui.dialog.ContextChatCompose import com.nextcloud.talk.ui.dialog.ContextChatCompose
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
import com.nextcloud.talk.ui.dialog.FilterConversationFragment import com.nextcloud.talk.ui.dialog.FilterConversationFragment
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.ARCHIVE
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.MENTION
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.UNREAD
import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.BrandingUtils import com.nextcloud.talk.utils.BrandingUtils
@ -529,20 +532,23 @@ class ConversationsListActivity :
addToConversationItems(conversation) addToConversationItems(conversation)
} }
getFilterStates()
val noFiltersActive = !(
filterState[MENTION] == true ||
filterState[UNREAD] == true ||
filterState[ARCHIVE] == true
)
sortConversations(conversationItems) sortConversations(conversationItems)
sortConversations(conversationItemsWithHeader) sortConversations(conversationItemsWithHeader)
sortConversations(nearFutureEventConversationItems) sortConversations(nearFutureEventConversationItems)
if (!hasFilterEnabled() && searchBehaviorSubject.value == false) { if (noFiltersActive && searchBehaviorSubject.value == false) {
adapter?.updateDataSet(nearFutureEventConversationItems, false) adapter?.updateDataSet(nearFutureEventConversationItems, false)
} else { } else {
// Filter Conversations applyFilter()
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
@ -556,6 +562,14 @@ class ConversationsListActivity :
fetchUsers() fetchUsers()
} }
fun applyFilter() {
if (!hasFilterEnabled()) {
filterableConversationItems = conversationItems
}
filterConversation()
adapter?.updateDataSet(filterableConversationItems, false)
}
private fun hasFilterEnabled(): Boolean { private fun hasFilterEnabled(): Boolean {
for ((k, v) in filterState) { for ((k, v) in filterState) {
if (k != FilterConversationFragment.DEFAULT && v) return true if (k != FilterConversationFragment.DEFAULT && v) return true
@ -585,32 +599,35 @@ class ConversationsListActivity :
nearFutureEventConversationItems.add(conversationItem) nearFutureEventConversationItems.add(conversationItem)
} }
fun filterConversation() { fun getFilterStates() {
val accountId = UserIdUtils.getIdForUser(currentUser) val accountId = UserIdUtils.getIdForUser(currentUser)
filterState[FilterConversationFragment.UNREAD] = ( filterState[UNREAD] = (
arbitraryStorageManager.getStorageSetting( arbitraryStorageManager.getStorageSetting(
accountId, accountId,
FilterConversationFragment.UNREAD, UNREAD,
"" ""
).blockingGet()?.value ?: "" ).blockingGet()?.value ?: ""
) == "true" ) == "true"
filterState[FilterConversationFragment.MENTION] = ( filterState[MENTION] = (
arbitraryStorageManager.getStorageSetting( arbitraryStorageManager.getStorageSetting(
accountId, accountId,
FilterConversationFragment.MENTION, MENTION,
"" ""
).blockingGet()?.value ?: "" ).blockingGet()?.value ?: ""
) == "true" ) == "true"
filterState[FilterConversationFragment.ARCHIVE] = ( filterState[ARCHIVE] = (
arbitraryStorageManager.getStorageSetting( arbitraryStorageManager.getStorageSetting(
accountId, accountId,
FilterConversationFragment.ARCHIVE, ARCHIVE,
"" ""
).blockingGet()?.value ?: "" ).blockingGet()?.value ?: ""
) == "true" ) == "true"
}
fun filterConversation() {
getFilterStates()
val newItems: MutableList<AbstractFlexibleItem<*>> = ArrayList() val newItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
val items = conversationItems val items = conversationItems
for (i in items) { for (i in items) {