diff --git a/app/src/main/java/org/linphone/ui/call/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/ConversationFragment.kt index 449ec870c..750491205 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/ConversationFragment.kt @@ -279,9 +279,11 @@ class ConversationFragment : GenericCallFragment() { } viewModel.updateEvents.observe(viewLifecycleOwner) { - val items = viewModel.eventsList - adapter.submitList(items) - Log.i("$TAG Events (messages) list updated, contains [${items.size}] items") + it.consume { + val items = viewModel.eventsList + adapter.submitList(items) + Log.i("$TAG Events (messages) list updated, contains [${items.size}] items") + } } viewModel.isEndToEndEncrypted.observe(viewLifecycleOwner) { encrypted -> diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 1c61501a6..f376bc7b8 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -368,8 +368,15 @@ class MainActivity : GenericActivity() { } args?.clear() - val action = ConversationsListFragmentDirections.actionGlobalConversationsListFragment() - findNavController().navigate(action) + if (findNavController().currentDestination?.id == R.id.conversationsListFragment) { + Log.w( + "$TAG Current destination is already conversations list, skipping navigation" + ) + } else { + val action = + ConversationsListFragmentDirections.actionGlobalConversationsListFragment() + findNavController().navigate(action) + } } catch (ise: IllegalStateException) { Log.e("$TAG Can't navigate to Conversations fragment: $ise") } @@ -481,7 +488,7 @@ class MainActivity : GenericActivity() { val pair = parseShortcutIfAny(intent) if (pair != null) { Log.i( - "$TAG Navigating to conversation with local [${pair.first}] and peer [${pair.second}] addresses, computed from shortcut ID" + "$TAG Navigating from debug to conversation with local [${pair.first}] and peer [${pair.second}] addresses, computed from shortcut ID" ) sharedViewModel.showConversationEvent.value = Event(pair) } @@ -497,8 +504,13 @@ class MainActivity : GenericActivity() { } } - val action = ConversationsListFragmentDirections.actionGlobalConversationsListFragment() - findNavController().navigate(action) + if (findNavController().currentDestination?.id == R.id.conversationsListFragment) { + Log.w("$TAG Current destination is already conversations list, skipping navigation") + } else { + val action = + ConversationsListFragmentDirections.actionGlobalConversationsListFragment() + findNavController().navigate(action) + } } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 3111c927d..330b58f9b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -430,12 +430,14 @@ class ConversationFragment : SlidingPaneChildFragment() { } viewModel.updateEvents.observe(viewLifecycleOwner) { - val items = viewModel.eventsList - adapter.submitList(items) - Log.i("$TAG Events (messages) list updated, contains [${items.size}] items") + it.consume { + val items = viewModel.eventsList + Log.i("$TAG Events (messages) list submitted, contains [${items.size}] items") + adapter.submitList(items) - (view.parent as? ViewGroup)?.doOnPreDraw { - sharedViewModel.openSlidingPaneEvent.value = Event(true) + (view.parent as? ViewGroup)?.doOnPreDraw { + sharedViewModel.openSlidingPaneEvent.value = Event(true) + } } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 6c6b9b46b..5cf1bd07c 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -315,6 +315,7 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo override fun beforeNotifyingChatRoomFound(sameOne: Boolean) { if (!sameOne) { + Log.i("$TAG Conversation found and not the same as before, configuring it...") chatRoom.addListener(chatRoomListener) configureChatRoom() } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt index 5d2d68469..a88ab8a7e 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt @@ -333,6 +333,9 @@ class SendMessageInConversationViewModel @UiThread constructor() : ViewModel() { if (list.isNotEmpty()) { isFileAttachmentsListOpen.value = true + Log.i("$TAG [${list.size}] attachment(s) added") + } else { + Log.w("$TAG No attachment to display!") } }