Merge pull request #4748 from nextcloud/bugfix/noid/fixNpeWhenAdapterNull

avoid Npe for adapter in ConversationsListActivity
This commit is contained in:
Sowjanya Kota 2025-02-21 14:06:10 +01:00 committed by GitHub
commit 56c119a004
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -470,7 +470,7 @@ class ConversationsListActivity :
// Filter Conversations // Filter Conversations
if (!hasFilterEnabled()) filterableConversationItems = conversationItems if (!hasFilterEnabled()) filterableConversationItems = conversationItems
filterConversation() filterConversation()
adapter!!.updateDataSet(filterableConversationItems, false) adapter?.updateDataSet(filterableConversationItems, false)
Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong()) Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong())
// Fetch Open Conversations // Fetch Open Conversations
@ -534,7 +534,7 @@ class ConversationsListActivity :
binding.noArchivedConversationLayout.visibility = View.GONE binding.noArchivedConversationLayout.visibility = View.GONE
} }
adapter!!.updateDataSet(newItems, true) adapter?.updateDataSet(newItems, true)
setFilterableItems(newItems) setFilterableItems(newItems)
if (archiveFilterOn) { if (archiveFilterOn) {
// Never a notification from archived conversations // Never a notification from archived conversations
@ -735,9 +735,9 @@ class ConversationsListActivity :
supportActionBar?.setTitle(R.string.nc_forward_to_three_dots) supportActionBar?.setTitle(R.string.nc_forward_to_three_dots)
} else { } else {
searchItem!!.isVisible = conversationItems.size > 0 searchItem!!.isVisible = conversationItems.size > 0
if (adapter!!.hasFilter()) { if (adapter?.hasFilter() == true) {
showSearchView(searchView, searchItem) showSearchView(searchView, searchItem)
searchView!!.setQuery(adapter!!.getFilter(String::class.java), false) searchView!!.setQuery(adapter?.getFilter(String::class.java), false)
} }
binding.searchText.setOnClickListener { binding.searchText.setOnClickListener {
showSearchView(searchView, searchItem) showSearchView(searchView, searchItem)
@ -768,20 +768,20 @@ class ConversationsListActivity :
searchItem!!.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { searchItem!!.setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem): Boolean { override fun onMenuItemActionExpand(item: MenuItem): Boolean {
initSearchDisposable() initSearchDisposable()
adapter!!.setHeadersShown(true) adapter?.setHeadersShown(true)
if (!hasFilterEnabled()) filterableConversationItems = searchableConversationItems if (!hasFilterEnabled()) filterableConversationItems = searchableConversationItems
adapter!!.updateDataSet(filterableConversationItems, false) adapter?.updateDataSet(filterableConversationItems, false)
adapter!!.showAllHeaders() adapter?.showAllHeaders()
binding.swipeRefreshLayoutView?.isEnabled = false binding.swipeRefreshLayoutView?.isEnabled = false
searchBehaviorSubject.onNext(true) searchBehaviorSubject.onNext(true)
return true return true
} }
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
adapter!!.setHeadersShown(false) adapter?.setHeadersShown(false)
if (!hasFilterEnabled()) filterableConversationItems = conversationItemsWithHeader if (!hasFilterEnabled()) filterableConversationItems = conversationItemsWithHeader
adapter!!.updateDataSet(filterableConversationItems, false) adapter?.updateDataSet(filterableConversationItems, false)
adapter!!.hideAllHeaders() adapter?.hideAllHeaders()
if (searchHelper != null) { if (searchHelper != null) {
// cancel any pending searches // cancel any pending searches
searchHelper!!.cancelSearch() searchHelper!!.cancelSearch()
@ -1158,8 +1158,8 @@ class ConversationsListActivity :
val lastVisibleItem = layoutManager!!.findLastCompletelyVisibleItemPosition() val lastVisibleItem = layoutManager!!.findLastCompletelyVisibleItemPosition()
for (flexItem in conversationItems) { for (flexItem in conversationItems) {
val conversation: ConversationModel = (flexItem as ConversationItem).model val conversation: ConversationModel = (flexItem as ConversationItem).model
val position = adapter!!.getGlobalPositionOf(flexItem) val position = adapter?.getGlobalPositionOf(flexItem)
if (hasUnreadItems(conversation) && position > lastVisibleItem) { if (position != null && hasUnreadItems(conversation) && position > lastVisibleItem) {
nextUnreadConversationScrollPosition = position nextUnreadConversationScrollPosition = position
if (!binding.newMentionPopupBubble.isShown) { if (!binding.newMentionPopupBubble.isShown) {
binding.newMentionPopupBubble.visibility = View.VISIBLE binding.newMentionPopupBubble.visibility = View.VISIBLE
@ -1239,7 +1239,7 @@ class ConversationsListActivity :
val filter = searchQuery val filter = searchQuery
searchQuery = "" searchQuery = ""
performFilterAndSearch(filter) performFilterAndSearch(filter)
} else if (adapter!!.hasNewFilter(newText)) { } else if (adapter?.hasNewFilter(newText) == true) {
performFilterAndSearch(newText) performFilterAndSearch(newText)
} }
} }
@ -1250,12 +1250,12 @@ class ConversationsListActivity :
if (hasFilterEnabled()) { if (hasFilterEnabled()) {
adapter?.updateDataSet(conversationItems) adapter?.updateDataSet(conversationItems)
adapter!!.setFilter(filter) adapter?.setFilter(filter)
adapter!!.filterItems() adapter?.filterItems()
adapter?.updateDataSet(filterableConversationItems) adapter?.updateDataSet(filterableConversationItems)
} else { } else {
adapter!!.setFilter(filter) adapter?.setFilter(filter)
adapter!!.filterItems() adapter?.filterItems()
} }
if (isUnifiedSearchAvailable(currentUser!!.capabilities!!.spreedCapability!!)) { if (isUnifiedSearchAvailable(currentUser!!.capabilities!!.spreedCapability!!)) {
@ -1268,18 +1268,18 @@ class ConversationsListActivity :
private fun resetSearchResults() { private fun resetSearchResults() {
clearMessageSearchResults() clearMessageSearchResults()
adapter!!.setFilter("") adapter?.setFilter("")
adapter!!.filterItems() adapter?.filterItems()
} }
private fun clearMessageSearchResults() { private fun clearMessageSearchResults() {
val firstHeader = adapter!!.getSectionHeader(0) val firstHeader = adapter?.getSectionHeader(0)
if (firstHeader != null && firstHeader.itemViewType == MessagesTextHeaderItem.VIEW_TYPE) { if (firstHeader != null && firstHeader.itemViewType == MessagesTextHeaderItem.VIEW_TYPE) {
adapter!!.removeSection(firstHeader) adapter?.removeSection(firstHeader)
} else { } else {
adapter!!.removeItemsOfType(MessageResultItem.VIEW_TYPE) adapter?.removeItemsOfType(MessageResultItem.VIEW_TYPE)
} }
adapter!!.removeItemsOfType(LoadMoreResultsItem.VIEW_TYPE) adapter?.removeItemsOfType(LoadMoreResultsItem.VIEW_TYPE)
} }
@SuppressLint("CheckResult") // handled by helper @SuppressLint("CheckResult") // handled by helper
@ -1308,7 +1308,7 @@ class ConversationsListActivity :
} }
override fun onItemClick(view: View, position: Int): Boolean { override fun onItemClick(view: View, position: Int): Boolean {
val item = adapter!!.getItem(position) val item = adapter?.getItem(position)
if (item != null) { if (item != null) {
when (item.itemViewType) { when (item.itemViewType) {
MessageResultItem.VIEW_TYPE -> { MessageResultItem.VIEW_TYPE -> {
@ -1461,7 +1461,7 @@ class ConversationsListActivity :
if (showShareToScreen || !networkMonitor.isOnline.value) { if (showShareToScreen || !networkMonitor.isOnline.value) {
Log.d(TAG, "sharing to multiple rooms not yet implemented. onItemLongClick is ignored.") Log.d(TAG, "sharing to multiple rooms not yet implemented. onItemLongClick is ignored.")
} else { } else {
val clickedItem: Any? = adapter!!.getItem(position) val clickedItem: Any? = adapter?.getItem(position)
if (clickedItem != null && clickedItem is ConversationItem) { if (clickedItem != null && clickedItem is ConversationItem) {
val conversation = clickedItem.model val conversation = clickedItem.model
conversationsListBottomDialog = ConversationsListBottomDialog( conversationsListBottomDialog = ConversationsListBottomDialog(
@ -2012,7 +2012,7 @@ class ConversationsListActivity :
adapterItems.add(LoadMoreResultsItem) adapterItems.add(LoadMoreResultsItem)
} }
adapter!!.addItems(0, adapterItems) adapter?.addItems(0, adapterItems)
binding.recyclerView?.scrollToPosition(0) binding.recyclerView?.scrollToPosition(0)
} }
} }