mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-09 13:59:48 +01:00
Merge pull request #4877 from nextcloud/issue-4762-search-bug
Fixing bugs with Conversation search
This commit is contained in:
commit
39b7931534
@ -41,9 +41,9 @@ import androidx.appcompat.app.AlertDialog
|
|||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||||
import androidx.core.os.bundleOf
|
|
||||||
import androidx.core.graphics.drawable.toDrawable
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.view.MenuItemCompat
|
import androidx.core.view.MenuItemCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
@ -1349,6 +1349,7 @@ class ConversationsListActivity :
|
|||||||
private fun performFilterAndSearch(filter: String?) {
|
private fun performFilterAndSearch(filter: String?) {
|
||||||
if (filter!!.length >= SEARCH_MIN_CHARS) {
|
if (filter!!.length >= SEARCH_MIN_CHARS) {
|
||||||
clearMessageSearchResults()
|
clearMessageSearchResults()
|
||||||
|
binding.noArchivedConversationLayout.visibility = View.GONE
|
||||||
|
|
||||||
if (hasFilterEnabled()) {
|
if (hasFilterEnabled()) {
|
||||||
adapter?.updateDataSet(conversationItems)
|
adapter?.updateDataSet(conversationItems)
|
||||||
@ -1372,6 +1373,12 @@ class ConversationsListActivity :
|
|||||||
clearMessageSearchResults()
|
clearMessageSearchResults()
|
||||||
adapter?.setFilter("")
|
adapter?.setFilter("")
|
||||||
adapter?.filterItems()
|
adapter?.filterItems()
|
||||||
|
val archiveFilterOn = filterState[FilterConversationFragment.ARCHIVE] ?: false
|
||||||
|
if (archiveFilterOn && adapter!!.isEmpty) {
|
||||||
|
binding.noArchivedConversationLayout.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding.noArchivedConversationLayout.visibility = View.GONE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clearMessageSearchResults() {
|
private fun clearMessageSearchResults() {
|
||||||
@ -1380,6 +1387,7 @@ class ConversationsListActivity :
|
|||||||
adapter?.removeSection(firstHeader)
|
adapter?.removeSection(firstHeader)
|
||||||
} else {
|
} else {
|
||||||
adapter?.removeItemsOfType(MessageResultItem.VIEW_TYPE)
|
adapter?.removeItemsOfType(MessageResultItem.VIEW_TYPE)
|
||||||
|
adapter?.removeItemsOfType(MessagesTextHeaderItem.VIEW_TYPE)
|
||||||
}
|
}
|
||||||
adapter?.removeItemsOfType(LoadMoreResultsItem.VIEW_TYPE)
|
adapter?.removeItemsOfType(LoadMoreResultsItem.VIEW_TYPE)
|
||||||
}
|
}
|
||||||
@ -2077,29 +2085,25 @@ class ConversationsListActivity :
|
|||||||
val entries = results.messages
|
val entries = results.messages
|
||||||
if (entries.isNotEmpty()) {
|
if (entries.isNotEmpty()) {
|
||||||
val adapterItems: MutableList<AbstractFlexibleItem<*>> = ArrayList(entries.size + 1)
|
val adapterItems: MutableList<AbstractFlexibleItem<*>> = ArrayList(entries.size + 1)
|
||||||
|
|
||||||
for (i in entries.indices) {
|
for (i in entries.indices) {
|
||||||
|
val showHeader = i == 0
|
||||||
adapterItems.add(
|
adapterItems.add(
|
||||||
MessageResultItem(
|
MessageResultItem(
|
||||||
context,
|
context,
|
||||||
currentUser!!,
|
currentUser!!,
|
||||||
entries[i],
|
entries[i],
|
||||||
|
showHeader,
|
||||||
viewThemeUtils = viewThemeUtils
|
viewThemeUtils = viewThemeUtils
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results.hasMore) {
|
if (results.hasMore) {
|
||||||
adapterItems.add(LoadMoreResultsItem)
|
adapterItems.add(LoadMoreResultsItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter?.addItems(Int.MAX_VALUE, adapterItems)
|
adapter?.addItems(Int.MAX_VALUE, adapterItems)
|
||||||
val pos = adapter?.currentItems?.indexOfFirst {
|
|
||||||
it is MessageResultItem
|
|
||||||
}
|
|
||||||
val item = (adapter?.currentItems?.get(pos!!) as MessageResultItem).apply { showHeader = true }
|
|
||||||
adapter?.addItem(pos!!, item)
|
|
||||||
adapter?.notifyItemInserted(pos!!)
|
|
||||||
adapter?.removeItem(pos!! - 1)
|
|
||||||
adapter?.notifyItemRemoved(pos!! - 1)
|
|
||||||
binding.recyclerView.scrollToPosition(0)
|
binding.recyclerView.scrollToPosition(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user