StartDMAction : small improvements after review

This commit is contained in:
ganfra 2023-12-01 11:28:29 +01:00
parent ee77131c61
commit 8ff2454ed0
7 changed files with 10 additions and 15 deletions

View file

@ -46,7 +46,7 @@ class DefaultStartDMAction @Inject constructor(
actionState.value = Async.Success(result.roomId) actionState.value = Async.Success(result.roomId)
} }
is StartDMResult.Failure -> { is StartDMResult.Failure -> {
actionState.value = Async.Failure(result) actionState.value = Async.Failure(result.throwable)
} }
} }
} }

View file

@ -22,8 +22,6 @@ import im.vector.app.features.analytics.plan.CreatedRoom
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId 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_ROOM_ID
import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_THROWABLE
import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID
@ -69,7 +67,7 @@ class DefaultStartDMActionTests {
val action = createStartDMAction(matrixClient) val action = createStartDMAction(matrixClient)
val state = mutableStateOf<Async<RoomId>>(Async.Uninitialized) val state = mutableStateOf<Async<RoomId>>(Async.Uninitialized)
action.execute(A_USER_ID, state) action.execute(A_USER_ID, state)
assertThat(state.value).isEqualTo(Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON))) assertThat(state.value).isEqualTo(Async.Failure<RoomId>(A_THROWABLE))
} }
private fun createStartDMAction( private fun createStartDMAction(

View file

@ -28,10 +28,9 @@ import io.element.android.features.createroom.test.FakeStartDMAction
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.core.RoomId 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.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.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_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.matrix.test.core.aBuildMeta
import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.libraries.usersearch.test.FakeUserRepository
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
@ -61,7 +60,7 @@ class CreateRoomRootPresenterTests {
val matrixUser = MatrixUser(UserId("@name:domain")) val matrixUser = MatrixUser(UserId("@name:domain"))
val startDMSuccessResult = Async.Success(A_ROOM_ID) val startDMSuccessResult = Async.Success(A_ROOM_ID)
val startDMFailureResult = Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON)) val startDMFailureResult = Async.Failure<RoomId>(A_THROWABLE)
// Failure // Failure
startDMAction.givenExecuteResult(startDMFailureResult) startDMAction.givenExecuteResult(startDMFailureResult)

View file

@ -26,7 +26,6 @@ dependencies {
implementation(libs.coroutines.core) implementation(libs.coroutines.core)
implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrix.test) implementation(projects.libraries.matrix.test)
implementation(projects.tests.testutils)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
api(projects.features.createroom.api) api(projects.features.createroom.api)
} }

View file

@ -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.RoomId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.tests.testutils.simulateLongTask import kotlinx.coroutines.delay
class FakeStartDMAction : StartDMAction { class FakeStartDMAction : StartDMAction {
@ -32,8 +32,9 @@ class FakeStartDMAction : StartDMAction {
executeResult = result executeResult = result
} }
override suspend fun execute(userId: UserId, actionState: MutableState<Async<RoomId>>) = simulateLongTask { override suspend fun execute(userId: UserId, actionState: MutableState<Async<RoomId>>) {
actionState.value = Async.Loading() actionState.value = Async.Loading()
delay(1)
actionState.value = executeResult actionState.value = executeResult
} }
} }

View file

@ -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.MatrixRoom
import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState 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.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_ROOM_ID
import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_THROWABLE
import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClient
@ -208,7 +206,7 @@ class RoomMemberDetailsPresenterTests {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java) Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java)
val startDMSuccessResult = Async.Success(A_ROOM_ID) val startDMSuccessResult = Async.Success(A_ROOM_ID)
val startDMFailureResult = Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON)) val startDMFailureResult = Async.Failure<RoomId>(A_THROWABLE)
// Failure // Failure
startDMAction.givenExecuteResult(startDMFailureResult) startDMAction.givenExecuteResult(startDMFailureResult)

View file

@ -30,12 +30,12 @@ suspend fun MatrixClient.startDM(userId: UserId): StartDMResult {
} else { } else {
createDM(userId).fold( createDM(userId).fold(
{ StartDMResult.Success(it, isNew = true) }, { StartDMResult.Success(it, isNew = true) },
{ StartDMResult.Failure(it.localizedMessage) } { StartDMResult.Failure(it) }
) )
} }
} }
sealed interface StartDMResult { sealed interface StartDMResult {
data class Success(val roomId: RoomId, val isNew: Boolean) : 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
} }