fix search

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-04-09 13:34:14 +02:00 committed by Marcel Hibbe
parent fd47146729
commit a18e192d28
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 24 additions and 14 deletions

View File

@ -519,9 +519,15 @@ class ConversationsListActivity :
// Update Conversations // Update Conversations
conversationItems.clear() conversationItems.clear()
conversationItemsWithHeader.clear() conversationItemsWithHeader.clear()
searchableConversationItems.clear()
for (conversation in list) { for (conversation in list) {
addToConversationItems(conversation) if (!FutureEvent(conversation)) {
addToConversationItems(conversation)
}
addToSearchableConversationItems(conversation)
} }
sortConversations(conversationItems) sortConversations(conversationItems)
sortConversations(conversationItemsWithHeader) sortConversations(conversationItemsWithHeader)
@ -550,6 +556,21 @@ class ConversationsListActivity :
return false return false
} }
private fun FutureEvent(conversation: ConversationModel): Boolean {
return conversation.objectType == ConversationEnums.ObjectType.EVENT &&
(conversation.objectId.split("#")[0].toLong() - (System.currentTimeMillis() / 1000)) > AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS
}
private fun addToSearchableConversationItems(conversation: ConversationModel) {
val headerTitle = resources!!.getString(R.string.conversations)
val headerItem = callHeaderItems.getOrPut(headerTitle) {
GenericTextHeaderItem(headerTitle, viewThemeUtils)
}
val conversationItem = ConversationItem(conversation, currentUser!!, this, headerItem, viewThemeUtils)
searchableConversationItems.add(conversationItem)
}
fun filterConversation() { fun filterConversation() {
val accountId = UserIdUtils.getIdForUser(currentUser) val accountId = UserIdUtils.getIdForUser(currentUser)
filterState[FilterConversationFragment.UNREAD] = ( filterState[FilterConversationFragment.UNREAD] = (
@ -1069,8 +1090,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
@ -2114,5 +2133,6 @@ class ConversationsListActivity :
const val NOTIFICATION_WARNING_DATE_NOT_SET = 0L const val NOTIFICATION_WARNING_DATE_NOT_SET = 0L
const val OFFSET_HEIGHT_DIVIDER: Int = 3 const val OFFSET_HEIGHT_DIVIDER: Int = 3
const val ROOM_TYPE_ONE_ONE = "1" const val ROOM_TYPE_ONE_ONE = "1"
private const val AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS: Long = 86400
} }
} }

View File

@ -18,7 +18,6 @@ import com.nextcloud.talk.data.database.model.ConversationEntity
import com.nextcloud.talk.data.network.NetworkMonitor import com.nextcloud.talk.data.network.NetworkMonitor
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.domain.ConversationModel import com.nextcloud.talk.models.domain.ConversationModel
import com.nextcloud.talk.models.json.conversations.ConversationEnums
import com.nextcloud.talk.utils.CapabilitiesUtil.isUserStatusAvailable import com.nextcloud.talk.utils.CapabilitiesUtil.isUserStatusAvailable
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
import io.reactivex.Observer import io.reactivex.Observer
@ -122,15 +121,7 @@ class OfflineFirstConversationsRepository @Inject constructor(
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.blockingSingle() .blockingSingle()
val currentTime = System.currentTimeMillis() / 1000 conversationsFromSync = conversationsList.map {
val conversationListWithoutEvents = conversationsList.filterNot { conversation ->
conversation.objectType == ConversationEnums.ObjectType.EVENT &&
conversation.objectId.split("#")[0].toLong() - currentTime >
AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS
}
conversationsFromSync = conversationListWithoutEvents.map {
it.asEntity(user.id!!) it.asEntity(user.id!!)
} }
@ -165,6 +156,5 @@ class OfflineFirstConversationsRepository @Inject constructor(
companion object { companion object {
val TAG = OfflineFirstConversationsRepository::class.simpleName val TAG = OfflineFirstConversationsRepository::class.simpleName
private const val AGE_THRESHOLD_FOR_EVENT_CONVERSATIONS: Long = 86400
} }
} }