From f29e79d64e0494f354222cb2b598ad02d739e370 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 19 Apr 2024 18:05:57 +0200 Subject: [PATCH] Change API `MatrixClient.joinRoom(roomId: RoomId): Result` to `MatrixClient.joinRoom(roomId: RoomId): Result` --- .../impl/response/AcceptDeclineInvitePresenter.kt | 12 +++++++----- .../response/AcceptDeclineInvitePresenterTest.kt | 6 +++--- .../impl/root/RoomDirectoryPresenter.kt | 1 + .../features/roomdirectory/impl/root/di/JoinRoom.kt | 2 +- .../features/roomdirectory/impl/root/FakeJoinRoom.kt | 2 +- .../impl/root/RoomDirectoryPresenterTest.kt | 8 ++++---- .../android/libraries/matrix/api/MatrixClient.kt | 2 +- .../libraries/matrix/impl/RustMatrixClient.kt | 3 +-- .../libraries/matrix/test/FakeMatrixClient.kt | 6 +++--- 9 files changed, 22 insertions(+), 20 deletions(-) diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt index 5f7e80b7b1..ec18aea045 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenter.kt @@ -102,12 +102,14 @@ class AcceptDeclineInvitePresenter @Inject constructor( private fun CoroutineScope.acceptInvite(roomId: RoomId, acceptedAction: MutableState>) = launch { acceptedAction.runUpdatingState { - client.joinRoom(roomId).onSuccess { - notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId, doRender = true) - client.getRoom(roomId)?.use { room -> - analyticsService.capture(room.toAnalyticsJoinedRoom(JoinedRoom.Trigger.Invite)) + client.joinRoom(roomId) + .onSuccess { + notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId, doRender = true) + client.getRoom(roomId)?.use { room -> + analyticsService.capture(room.toAnalyticsJoinedRoom(JoinedRoom.Trigger.Invite)) + } } - } + .map { roomId } } } diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt index dfb330da59..90dcc104d4 100644 --- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt +++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/response/AcceptDeclineInvitePresenterTest.kt @@ -164,7 +164,7 @@ class AcceptDeclineInvitePresenterTest { @Test fun `present - accepting invite error flow`() = runTest { val joinRoomFailure = lambdaRecorder { roomId: RoomId -> - Result.failure(RuntimeException("Failed to join room $roomId")) + Result.failure(RuntimeException("Failed to join room $roomId")) } val client = FakeMatrixClient().apply { joinRoomLambda = joinRoomFailure @@ -197,8 +197,8 @@ class AcceptDeclineInvitePresenterTest { @Test fun `present - accepting invite success flow`() = runTest { - val joinRoomSuccess = lambdaRecorder { roomId: RoomId -> - Result.success(roomId) + val joinRoomSuccess = lambdaRecorder { _: RoomId -> + Result.success(Unit) } val client = FakeMatrixClient().apply { joinRoomLambda = joinRoomSuccess diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt index 5d4cef55cb..4f9130613f 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt @@ -108,6 +108,7 @@ class RoomDirectoryPresenter @Inject constructor( private fun CoroutineScope.joinRoom(state: MutableState>, roomId: RoomId) = launch { state.runUpdatingState { joinRoom(roomId) + .map { roomId } } } diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/di/JoinRoom.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/di/JoinRoom.kt index 983d2a1dd2..477b49e4f6 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/di/JoinRoom.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/di/JoinRoom.kt @@ -23,7 +23,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import javax.inject.Inject interface JoinRoom { - suspend operator fun invoke(roomId: RoomId): Result + suspend operator fun invoke(roomId: RoomId): Result } @ContributesBinding(SessionScope::class) diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/FakeJoinRoom.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/FakeJoinRoom.kt index 3f4d17aefd..6251bcaefa 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/FakeJoinRoom.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/FakeJoinRoom.kt @@ -20,7 +20,7 @@ import io.element.android.features.roomdirectory.impl.root.di.JoinRoom import io.element.android.libraries.matrix.api.core.RoomId class FakeJoinRoom( - var lambda: (RoomId) -> Result = { Result.success(it) } + var lambda: (RoomId) -> Result = { Result.success(Unit) } ) : JoinRoom { override suspend fun invoke(roomId: RoomId) = lambda(roomId) } diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt index eefafc86e1..3af102146b 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt @@ -138,11 +138,11 @@ import org.junit.Test @Test fun `present - emit join room event`() = runTest { - val joinRoomSuccess = lambdaRecorder { roomId: RoomId -> - Result.success(roomId) + val joinRoomSuccess = lambdaRecorder { _: RoomId -> + Result.success(Unit) } val joinRoomFailure = lambdaRecorder { roomId: RoomId -> - Result.failure(RuntimeException("Failed to join room $roomId")) + Result.failure(RuntimeException("Failed to join room $roomId")) } val fakeJoinRoom = FakeJoinRoom(joinRoomSuccess) val presenter = createRoomDirectoryPresenter(joinRoom = fakeJoinRoom) @@ -171,7 +171,7 @@ import org.junit.Test roomDirectoryService: RoomDirectoryService = FakeRoomDirectoryService( createRoomDirectoryListFactory = { FakeRoomDirectoryList() } ), - joinRoom: JoinRoom = FakeJoinRoom { Result.success(it) }, + joinRoom: JoinRoom = FakeJoinRoom { Result.success(Unit) }, ): RoomDirectoryPresenter { return RoomDirectoryPresenter( dispatchers = testCoroutineDispatchers(), diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index ac2a00dbdc..3e9c1a264f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -65,7 +65,7 @@ interface MatrixClient : Closeable { suspend fun setDisplayName(displayName: String): Result suspend fun uploadAvatar(mimeType: String, data: ByteArray): Result suspend fun removeAvatar(): Result - suspend fun joinRoom(roomId: RoomId): Result + suspend fun joinRoom(roomId: RoomId): Result fun syncService(): SyncService fun sessionVerificationService(): SessionVerificationService fun pushersService(): PushersService diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 48683d77ba..f5ec5d71ee 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -440,7 +440,7 @@ class RustMatrixClient( runCatching { client.removeAvatar() } } - override suspend fun joinRoom(roomId: RoomId): Result = withContext(sessionDispatcher) { + override suspend fun joinRoom(roomId: RoomId): Result = withContext(sessionDispatcher) { runCatching { client.joinRoomById(roomId.value).destroy() try { @@ -448,7 +448,6 @@ class RustMatrixClient( } catch (e: Exception) { Timber.e(e, "Timeout waiting for the room to be available in the room list") } - roomId } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index e43d7655f0..8578105f7d 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -103,8 +103,8 @@ class FakeMatrixClient( private var setDisplayNameResult: Result = Result.success(Unit) private var uploadAvatarResult: Result = Result.success(Unit) private var removeAvatarResult: Result = Result.success(Unit) - var joinRoomLambda: (RoomId) -> Result = { - Result.success(it) + var joinRoomLambda: (RoomId) -> Result = { + Result.success(Unit) } var getRoomInfoFlowLambda = { _: RoomId -> @@ -197,7 +197,7 @@ class FakeMatrixClient( return removeAvatarResult } - override suspend fun joinRoom(roomId: RoomId): Result = joinRoomLambda(roomId) + override suspend fun joinRoom(roomId: RoomId): Result = joinRoomLambda(roomId) override fun sessionVerificationService(): SessionVerificationService = sessionVerificationService