diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index 999513be8..534d0e843 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -72,10 +72,7 @@ class ConversationsListFragment : AbstractMainFragment() { binding.conversationsList.scrollToPosition(0) } - override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) { - Log.i("$TAG [$itemCount] removed, scrolling to top") - binding.conversationsList.scrollToPosition(0) - } + override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) { } } override fun onDefaultAccountChanged() { @@ -118,6 +115,7 @@ class ConversationsListFragment : AbstractMainFragment() { binding.lifecycleOwner = viewLifecycleOwner binding.viewModel = listViewModel + observeToastEvents(listViewModel) binding.conversationsList.setHasFixedSize(true) binding.conversationsList.layoutManager = LinearLayoutManager(requireContext()) @@ -150,7 +148,6 @@ class ConversationsListFragment : AbstractMainFragment() { { // onDeleteConversation Log.i("$TAG Deleting conversation [${model.id}]") model.delete() - listViewModel.applyFilter() }, { // onLeaveGroup Log.i("$TAG Leaving group conversation [${model.id}]") diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt index 228694993..ef07fa3c3 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt @@ -227,6 +227,7 @@ class ConversationModel @WorkerThread constructor(val chatRoom: ChatRoom) { val basic = chatRoom.hasCapability(Capabilities.Basic.toInt()) ShortcutUtils.removeShortcutToChatRoom(chatRoom) core.deleteChatRoom(chatRoom) + if (basic) { Log.i("$TAG Conversation [$id] has been deleted") isBeingDeleted.postValue(false) diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationsListViewModel.kt index 68b42fcb0..2d440e7eb 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationsListViewModel.kt @@ -60,7 +60,19 @@ class ConversationsListViewModel @UiThread constructor() : AbstractMainViewModel computeChatRoomsList(currentFilter) } ChatRoom.State.Deleted -> { - computeChatRoomsList(currentFilter) + val currentList = conversations.value.orEmpty() + val found = currentList.find { + it.chatRoom == chatRoom + } + if (found != null) { + val newList = arrayListOf() + newList.addAll(currentList) + newList.remove(found) + Log.i("$TAG Removing chat room from list") + conversations.postValue(newList) + } else { + Log.w("$TAG Failed to find item in list matching deleted chat room") + } showGreenToastEvent.postValue( Event(