Fixed back nav when creating a group chat room

This commit is contained in:
Sylvain Berfini 2021-10-25 10:40:13 +02:00
parent a752549002
commit 7c5feb041a
3 changed files with 25 additions and 6 deletions

View file

@ -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)
)
}
}

View file

@ -125,8 +125,16 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
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<ChatRoomGroupInfoFragmentBinding>() {
dialog.show()
meAdminStatusChangedDialog = dialog
}
private fun goToChatRoom(chatRoom: ChatRoom, created: Boolean) {
sharedViewModel.selectedChatRoom.value = chatRoom
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel), created)
}
}

View file

@ -43,6 +43,7 @@ class GroupInfoViewModelFactory(private val chatRoom: ChatRoom?) :
class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() {
val createdChatRoomEvent = MutableLiveData<Event<ChatRoom>>()
val updatedChatRoomEvent = MutableLiveData<Event<ChatRoom>>()
val subject = MutableLiveData<String>()
@ -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)
}
}