change some logic from event conversations PRs

.. while making sure logic from near/far future events remains and archived conversation handling is fixed (must not show up in main conversations list).

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-05-27 18:08:49 +02:00
parent b35bfc1ee7
commit d7d53f5a2b
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 13 additions and 58 deletions

View File

@ -213,7 +213,6 @@ 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
@ -523,31 +522,20 @@ class ConversationsListActivity :
// Update Conversations // Update Conversations
conversationItems.clear() conversationItems.clear()
conversationItemsWithHeader.clear() conversationItemsWithHeader.clear()
nearFutureEventConversationItems.clear() searchableConversationItems.clear()
for (conversation in list) { for (conversation in list) {
if (!isFutureEvent(conversation) && !conversation.hasArchived) {
addToNearFutureEventConversationItems(conversation)
}
addToConversationItems(conversation) addToConversationItems(conversation)
} }
searchableConversationItems.addAll(conversationItemsWithHeader)
getFilterStates() getFilterStates()
val noFiltersActive = !(
filterState[MENTION] == true ||
filterState[UNREAD] == true ||
filterState[ARCHIVE] == true
)
sortConversations(conversationItems) sortConversations(conversationItems)
sortConversations(conversationItemsWithHeader) sortConversations(conversationItemsWithHeader)
sortConversations(nearFutureEventConversationItems) sortConversations(searchableConversationItems)
if (noFiltersActive && searchBehaviorSubject.value == false) { applyFilter()
adapter?.updateDataSet(nearFutureEventConversationItems, false)
} else {
applyFilter()
}
Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong()) Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong())
@ -588,17 +576,6 @@ class ConversationsListActivity :
return conversation.objectType == ConversationEnums.ObjectType.EVENT && sixteenHoursAfterTimeStamp return conversation.objectType == ConversationEnums.ObjectType.EVENT && sixteenHoursAfterTimeStamp
} }
fun showOnlyNearFutureEvents() {
sortConversations(nearFutureEventConversationItems)
adapter?.updateDataSet(nearFutureEventConversationItems, false)
adapter?.smoothScrollToPosition(0)
}
private fun addToNearFutureEventConversationItems(conversation: ConversationModel) {
val conversationItem = ConversationItem(conversation, currentUser!!, this, null, viewThemeUtils)
nearFutureEventConversationItems.add(conversationItem)
}
fun getFilterStates() { fun getFilterStates() {
val accountId = UserIdUtils.getIdForUser(currentUser) val accountId = UserIdUtils.getIdForUser(currentUser)
filterState[UNREAD] = ( filterState[UNREAD] = (
@ -890,12 +867,7 @@ class ConversationsListActivity :
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
adapter?.setHeadersShown(false) adapter?.setHeadersShown(false)
searchBehaviorSubject.onNext(false) searchBehaviorSubject.onNext(false)
if (!hasFilterEnabled()) filterableConversationItems = conversationItemsWithHeader applyFilter()
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
@ -1050,7 +1022,7 @@ class ConversationsListActivity :
this, this,
viewThemeUtils viewThemeUtils
) )
conversationItems.add(conversationItem)
val conversationItemWithHeader = ConversationItem( val conversationItemWithHeader = ConversationItem(
conversation, conversation,
currentUser!!, currentUser!!,
@ -1058,7 +1030,13 @@ class ConversationsListActivity :
callHeaderItems[headerTitle], callHeaderItems[headerTitle],
viewThemeUtils viewThemeUtils
) )
conversationItemsWithHeader.add(conversationItemWithHeader)
if (isFutureEvent(conversation)) {
searchableConversationItems.add(conversationItem)
} else {
conversationItems.add(conversationItem)
conversationItemsWithHeader.add(conversationItemWithHeader)
}
} }
private fun showErrorDialog() { private fun showErrorDialog() {
@ -1125,8 +1103,6 @@ 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

@ -7,7 +7,6 @@
package com.nextcloud.talk.ui.dialog package com.nextcloud.talk.ui.dialog
import android.app.Dialog import android.app.Dialog
import android.content.DialogInterface
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
@ -100,14 +99,6 @@ class FilterConversationFragment : DialogFragment() {
} }
binding.buttonClose.setOnClickListener { binding.buttonClose.setOnClickListener {
val noFiltersActive = !(
filterState[MENTION] == true ||
filterState[UNREAD] == true ||
filterState[ARCHIVE] == true
)
if (noFiltersActive) {
(requireActivity() as ConversationsListActivity).showOnlyNearFutureEvents()
}
dismiss() dismiss()
} }
} }
@ -139,18 +130,6 @@ class FilterConversationFragment : DialogFragment() {
(requireActivity() as ConversationsListActivity).filterConversation() (requireActivity() as ConversationsListActivity).filterConversation()
} }
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
val noFiltersActive = !(
filterState[MENTION] == true ||
filterState[UNREAD] == true ||
filterState[ARCHIVE] == true
)
if (noFiltersActive) {
(requireActivity() as ConversationsListActivity).showOnlyNearFutureEvents()
}
}
companion object { companion object {
private const val FILTER_STATE_ARG = "FILTER_STATE_ARG" private const val FILTER_STATE_ARG = "FILTER_STATE_ARG"