diff --git a/app/src/main/java/org/linphone/activities/Navigation.kt b/app/src/main/java/org/linphone/activities/Navigation.kt index f035ce2eb..e8f289c27 100644 --- a/app/src/main/java/org/linphone/activities/Navigation.kt +++ b/app/src/main/java/org/linphone/activities/Navigation.kt @@ -340,12 +340,17 @@ internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) { } } -internal fun GroupInfoFragment.navigateToChatRoom(args: Bundle?) { +internal fun GroupInfoFragment.navigateToChatRoom(args: Bundle?, created: Boolean) { if (findNavController().currentDestination?.id == R.id.groupInfoFragment) { + val popUpToFragmentId = if (created) { // To remove all creation fragments from back stack + R.id.chatRoomCreationFragment + } else { + R.id.detailChatRoomFragment + } findNavController().navigate( R.id.action_groupInfoFragment_to_detailChatRoomFragment, args, - popupTo(R.id.detailChatRoomFragment, true) + popupTo(popUpToFragmentId, true) ) } } diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt index 58b4dcde0..42e695f8d 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt @@ -125,8 +125,16 @@ class GroupInfoFragment : SecureFragment() { viewLifecycleOwner, { it.consume { chatRoom -> - sharedViewModel.selectedChatRoom.value = chatRoom - navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel)) + goToChatRoom(chatRoom, true) + } + } + ) + + viewModel.updatedChatRoomEvent.observe( + viewLifecycleOwner, + { + it.consume { chatRoom -> + goToChatRoom(chatRoom, false) } } ) @@ -231,4 +239,9 @@ class GroupInfoFragment : SecureFragment() { dialog.show() meAdminStatusChangedDialog = dialog } + + private fun goToChatRoom(chatRoom: ChatRoom, created: Boolean) { + sharedViewModel.selectedChatRoom.value = chatRoom + navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel), created) + } } diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt index d59448f61..3e57ab89f 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt @@ -43,6 +43,7 @@ class GroupInfoViewModelFactory(private val chatRoom: ChatRoom?) : class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() { val createdChatRoomEvent = MutableLiveData>() + val updatedChatRoomEvent = MutableLiveData>() val subject = MutableLiveData() @@ -193,7 +194,7 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() { chatRoom.addParticipants(toAdd) // Go back to chat room - createdChatRoomEvent.value = Event(chatRoom) + updatedChatRoomEvent.value = Event(chatRoom) } } @@ -201,7 +202,7 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() { if (chatRoom != null) { Log.w("[Chat Room Group Info] Leaving group") chatRoom.leave() - createdChatRoomEvent.value = Event(chatRoom) + updatedChatRoomEvent.value = Event(chatRoom) } }