From 785a27151e6ea8517a643499d924c6cea2a48b9f Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 1 Dec 2023 11:28:29 +0100 Subject: [PATCH] StartDMAction : small improvements after review --- .../android/features/createroom/impl/DefaultStartDMAction.kt | 2 +- .../features/createroom/impl/DefaultStartDMActionTests.kt | 4 +--- .../createroom/impl/root/CreateRoomRootPresenterTests.kt | 5 ++--- features/createroom/test/build.gradle.kts | 1 - .../android/features/createroom/test/FakeStartDMAction.kt | 5 +++-- .../members/details/RoomMemberDetailsPresenterTests.kt | 4 +--- .../io/element/android/libraries/matrix/api/room/StartDM.kt | 4 ++-- 7 files changed, 10 insertions(+), 15 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt index b7f1dc6c9c..7145ac671e 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt @@ -46,7 +46,7 @@ class DefaultStartDMAction @Inject constructor( actionState.value = Async.Success(result.roomId) } is StartDMResult.Failure -> { - actionState.value = Async.Failure(result) + actionState.value = Async.Failure(result.throwable) } } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt index 2bd7ebb687..f2ed30c58d 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt @@ -22,8 +22,6 @@ import im.vector.app.features.analytics.plan.CreatedRoom import io.element.android.libraries.architecture.Async import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.room.StartDMResult -import io.element.android.libraries.matrix.test.A_FAILURE_REASON import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_USER_ID @@ -69,7 +67,7 @@ class DefaultStartDMActionTests { val action = createStartDMAction(matrixClient) val state = mutableStateOf>(Async.Uninitialized) action.execute(A_USER_ID, state) - assertThat(state.value).isEqualTo(Async.Failure(StartDMResult.Failure(A_FAILURE_REASON))) + assertThat(state.value).isEqualTo(Async.Failure(A_THROWABLE)) } private fun createStartDMAction( diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt index 5322407c35..a0fb71dd31 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt @@ -28,10 +28,9 @@ import io.element.android.features.createroom.test.FakeStartDMAction import io.element.android.libraries.architecture.Async import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId -import io.element.android.libraries.matrix.api.room.StartDMResult import io.element.android.libraries.matrix.api.user.MatrixUser -import io.element.android.libraries.matrix.test.A_FAILURE_REASON import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.tests.testutils.WarmUpRule @@ -61,7 +60,7 @@ class CreateRoomRootPresenterTests { val matrixUser = MatrixUser(UserId("@name:domain")) val startDMSuccessResult = Async.Success(A_ROOM_ID) - val startDMFailureResult = Async.Failure(StartDMResult.Failure(A_FAILURE_REASON)) + val startDMFailureResult = Async.Failure(A_THROWABLE) // Failure startDMAction.givenExecuteResult(startDMFailureResult) diff --git a/features/createroom/test/build.gradle.kts b/features/createroom/test/build.gradle.kts index 7c83725971..53c3e6461a 100644 --- a/features/createroom/test/build.gradle.kts +++ b/features/createroom/test/build.gradle.kts @@ -26,7 +26,6 @@ dependencies { implementation(libs.coroutines.core) implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.test) - implementation(projects.tests.testutils) implementation(projects.libraries.architecture) api(projects.features.createroom.api) } diff --git a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt index 09d59b7f6c..c1888dc53f 100644 --- a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt +++ b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.architecture.Async import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.test.A_ROOM_ID -import io.element.android.tests.testutils.simulateLongTask +import kotlinx.coroutines.delay class FakeStartDMAction : StartDMAction { @@ -32,8 +32,9 @@ class FakeStartDMAction : StartDMAction { executeResult = result } - override suspend fun execute(userId: UserId, actionState: MutableState>) = simulateLongTask { + override suspend fun execute(userId: UserId, actionState: MutableState>) { actionState.value = Async.Loading() + delay(1) actionState.value = executeResult } } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt index 9cf01c91e2..79a8faf3f1 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt @@ -33,8 +33,6 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.StartDMResult -import io.element.android.libraries.matrix.test.A_FAILURE_REASON import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.FakeMatrixClient @@ -208,7 +206,7 @@ class RoomMemberDetailsPresenterTests { val initialState = awaitItem() Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java) val startDMSuccessResult = Async.Success(A_ROOM_ID) - val startDMFailureResult = Async.Failure(StartDMResult.Failure(A_FAILURE_REASON)) + val startDMFailureResult = Async.Failure(A_THROWABLE) // Failure startDMAction.givenExecuteResult(startDMFailureResult) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt index b30248170f..7d0fd9a582 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt @@ -30,12 +30,12 @@ suspend fun MatrixClient.startDM(userId: UserId): StartDMResult { } else { createDM(userId).fold( { StartDMResult.Success(it, isNew = true) }, - { StartDMResult.Failure(it.localizedMessage) } + { StartDMResult.Failure(it) } ) } } sealed interface StartDMResult { data class Success(val roomId: RoomId, val isNew: Boolean) : StartDMResult - data class Failure(override val message: String?) : StartDMResult, Exception(message) + data class Failure(val throwable: Throwable) : StartDMResult }