diff --git a/changelog.d/6549.bugfix b/changelog.d/6549.bugfix new file mode 100644 index 0000000000..eb6e5bcfb7 --- /dev/null +++ b/changelog.d/6549.bugfix @@ -0,0 +1 @@ +Fix infinite loading when opening a DM when the current room is the same DM. diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailPendingAction.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailPendingAction.kt index b42f551ba0..79328b6272 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailPendingAction.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailPendingAction.kt @@ -17,6 +17,7 @@ package im.vector.app.features.home.room.detail sealed class RoomDetailPendingAction { + object DoNothing : RoomDetailPendingAction() data class JumpToReadReceipt(val userId: String) : RoomDetailPendingAction() data class MentionUser(val userId: String) : RoomDetailPendingAction() data class OpenRoom(val roomId: String, val closeCurrentRoom: Boolean = false) : RoomDetailPendingAction() diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index 972b5ea898..e86a7fe227 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -1323,6 +1323,7 @@ class TimelineFragment @Inject constructor( private fun handlePendingAction(roomDetailPendingAction: RoomDetailPendingAction) { when (roomDetailPendingAction) { + RoomDetailPendingAction.DoNothing -> Unit is RoomDetailPendingAction.JumpToReadReceipt -> timelineViewModel.handle(RoomDetailAction.JumpToReadReceipt(roomDetailPendingAction.userId)) is RoomDetailPendingAction.MentionUser -> diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt index 88a27f246c..d050b0d561 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -136,6 +136,7 @@ class RoomMemberProfileFragment @Inject constructor( is RoomMemberProfileViewEvents.OnBanActionSuccess -> Unit is RoomMemberProfileViewEvents.OnIgnoreActionSuccess -> Unit is RoomMemberProfileViewEvents.OnInviteActionSuccess -> Unit + RoomMemberProfileViewEvents.GoBack -> handleGoBack() } } setupLongClicks() @@ -309,6 +310,11 @@ class RoomMemberProfileFragment @Inject constructor( viewModel.handle(RoomMemberProfileAction.OpenOrCreateDm(fragmentArgs.userId)) } + private fun handleGoBack() { + roomDetailPendingActionStore.data = RoomDetailPendingAction.DoNothing + vectorBaseActivity.finish() + } + override fun onJumpToReadReceiptClicked() { roomDetailPendingActionStore.data = RoomDetailPendingAction.JumpToReadReceipt(fragmentArgs.userId) vectorBaseActivity.finish() diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewEvents.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewEvents.kt index 46983b52a4..d04de8b936 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewEvents.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewEvents.kt @@ -40,4 +40,5 @@ sealed class RoomMemberProfileViewEvents : VectorViewEvents { data class ShareRoomMemberProfile(val permalink: String) : RoomMemberProfileViewEvents() data class OpenRoom(val roomId: String) : RoomMemberProfileViewEvents() + object GoBack : RoomMemberProfileViewEvents() } diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewModel.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewModel.kt index bf79021fa6..2c30555696 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileViewModel.kt @@ -183,6 +183,9 @@ class RoomMemberProfileViewModel @AssistedInject constructor( } if (roomId != initialState.roomId) { _viewEvents.post(RoomMemberProfileViewEvents.OpenRoom(roomId = roomId)) + } else { + // Just go back to the previous screen (timeline) + _viewEvents.post(RoomMemberProfileViewEvents.GoBack) } } }