diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesAction.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesAction.kt index ed6ed23c9d..d96e0f01de 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesAction.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesAction.kt @@ -20,6 +20,7 @@ import im.vector.app.core.platform.VectorViewModelAction import org.matrix.android.sdk.api.session.room.model.RoomSummary sealed class InvitesAction : VectorViewModelAction { + data class SelectRoom(val roomSummary: RoomSummary) : InvitesAction() data class AcceptInvitation(val roomSummary: RoomSummary) : InvitesAction() data class RejectInvitation(val roomSummary: RoomSummary) : InvitesAction() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt index f557483289..0dbc1b8f34 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesFragment.kt @@ -66,7 +66,7 @@ class InvitesFragment : VectorBaseFragment(), RoomListLi viewModel.observeViewEvents { when (it) { is InvitesViewEvents.Failure -> showFailure(it.throwable) - is InvitesViewEvents.OpenRoom -> handleOpenRoom(it.roomSummary, it.shouldCloseInviteView) + is InvitesViewEvents.OpenRoom -> handleOpenRoom(it.roomSummary, it.shouldCloseInviteView, it.isInviteAlreadySelected) } } @@ -94,11 +94,15 @@ class InvitesFragment : VectorBaseFragment(), RoomListLi }.launchIn(viewLifecycleOwner.lifecycleScope) } - private fun handleOpenRoom(roomSummary: RoomSummary, shouldCloseInviteView: Boolean) { + private fun handleOpenRoom( + roomSummary: RoomSummary, + shouldCloseInviteView: Boolean, + isInviteAlreadyAccepted: Boolean, + ) { navigator.openRoom( context = requireActivity(), roomId = roomSummary.roomId, - isInviteAlreadyAccepted = true, + isInviteAlreadyAccepted = isInviteAlreadyAccepted, trigger = ViewRoom.Trigger.RoomList // #6508 ) if (shouldCloseInviteView) { @@ -120,7 +124,9 @@ class InvitesFragment : VectorBaseFragment(), RoomListLi override fun onSuggestedRoomClicked(room: SpaceChildInfo) = Unit - override fun onRoomClicked(room: RoomSummary) = Unit + override fun onRoomClicked(room: RoomSummary) { + viewModel.handle(InvitesAction.SelectRoom(room)) + } override fun onRoomLongClicked(room: RoomSummary): Boolean = false } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt index 21310592a4..69749b8c48 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewEvents.kt @@ -21,5 +21,9 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary sealed class InvitesViewEvents : VectorViewEvents { data class Failure(val throwable: Throwable) : InvitesViewEvents() - data class OpenRoom(val roomSummary: RoomSummary, val shouldCloseInviteView: Boolean) : InvitesViewEvents() + data class OpenRoom( + val roomSummary: RoomSummary, + val shouldCloseInviteView: Boolean, + val isInviteAlreadySelected: Boolean, + ) : InvitesViewEvents() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt index b8034d2364..8ef7c2bfef 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/invites/InvitesViewModel.kt @@ -76,11 +76,20 @@ class InvitesViewModel @AssistedInject constructor( override fun handle(action: InvitesAction) { when (action) { + is InvitesAction.SelectRoom -> handleSelectRoom(action) is InvitesAction.AcceptInvitation -> handleAcceptInvitation(action) is InvitesAction.RejectInvitation -> handleRejectInvitation(action) } } + private fun handleSelectRoom(action: InvitesAction.SelectRoom) { + _viewEvents.post(InvitesViewEvents.OpenRoom( + roomSummary = action.roomSummary, + shouldCloseInviteView = false, + isInviteAlreadySelected = false, + )) + } + private fun handleRejectInvitation(action: InvitesAction.RejectInvitation) = withState { state -> val roomId = action.roomSummary.roomId val roomMembershipChange = state.roomMembershipChanges[roomId] @@ -129,7 +138,7 @@ class InvitesViewModel @AssistedInject constructor( ) } - _viewEvents.post(InvitesViewEvents.OpenRoom(action.roomSummary, shouldCloseInviteView)) + _viewEvents.post(InvitesViewEvents.OpenRoom(action.roomSummary, shouldCloseInviteView, isInviteAlreadySelected = true)) } private fun observeInvites() {