From 9b96bd427cb22edd7fb9fc3814f5b190156e0a09 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 17 Jul 2023 22:26:21 +0200 Subject: [PATCH 1/3] Update rust sdk : start branching new SyncService (wip) --- .../io/element/android/appnav/LoggedInFlowNode.kt | 4 +++- gradle/libs.versions.toml | 2 +- .../libraries/matrix/api/sync/SyncService.kt | 2 +- .../libraries/matrix/impl/RustMatrixClient.kt | 15 +++++++-------- .../impl/auth/RustMatrixAuthenticationService.kt | 4 +++- .../libraries/matrix/impl/sync/AppStateMapper.kt | 11 ++++++----- .../libraries/matrix/impl/sync/RustSyncService.kt | 10 +++++----- .../{AppExtension.kt => SyncServiceExtension.kt} | 12 ++++++------ .../libraries/matrix/test/sync/FakeSyncService.kt | 2 +- .../android/samples/minimal/RoomListScreen.kt | 5 ++++- 10 files changed, 37 insertions(+), 30 deletions(-) rename libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/{AppExtension.kt => SyncServiceExtension.kt} (75%) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 48a0743447..2a11c00fcd 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -139,7 +139,9 @@ class LoggedInFlowNode @AssistedInject constructor( } }, onResume = { - syncService.startSync() + lifecycleScope.launch { + syncService.startSync() + } }, onPause = { syncService.stopSync() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d7658a9173..a13a5d5d02 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -145,7 +145,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" } timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.31" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.32" sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" } sqldelight-driver-jvm = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" } sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncService.kt index 9ed74c48e6..5271ec9bc0 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/sync/SyncService.kt @@ -22,7 +22,7 @@ interface SyncService { /** * Tries to start the sync. If already syncing it has no effect. */ - fun startSync(): Result + suspend fun startSync(): Result /** * Tries to stop the sync. If service is not syncing it has no effect. 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 d7195ebf11..864cf328cf 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 @@ -73,10 +73,12 @@ import java.io.File import org.matrix.rustcomponents.sdk.CreateRoomParameters as RustCreateRoomParameters import org.matrix.rustcomponents.sdk.RoomPreset as RustRoomPreset import org.matrix.rustcomponents.sdk.RoomVisibility as RustRoomVisibility +import org.matrix.rustcomponents.sdk.SyncService as ClientSyncService @OptIn(ExperimentalCoroutinesApi::class) class RustMatrixClient constructor( private val client: Client, + private val syncService: ClientSyncService, private val sessionStore: SessionStore, appCoroutineScope: CoroutineScope, private val dispatchers: CoroutineDispatchers, @@ -86,14 +88,11 @@ class RustMatrixClient constructor( ) : MatrixClient { override val sessionId: UserId = UserId(client.userId()) - private val app = client.app().use { builder -> - builder.finish() - } - private val roomListService = app.roomListService() + private val roomListService = syncService.roomListService() private val sessionDispatcher = dispatchers.io.limitedParallelism(64) private val sessionCoroutineScope = appCoroutineScope.childScope(dispatchers.main, "Session-${sessionId}") private val verificationService = RustSessionVerificationService() - private val syncService = RustSyncService(app, roomListService.stateFlow(), sessionCoroutineScope) + private val rustSyncService = RustSyncService(syncService, roomListService.stateFlow(), sessionCoroutineScope) private val pushersService = RustPushersService( client = client, dispatchers = dispatchers, @@ -131,7 +130,7 @@ class RustMatrixClient constructor( init { client.setDelegate(clientDelegate) - syncService.syncState + rustSyncService.syncState .onEach { syncState -> if (syncState == SyncState.Syncing) { onSlidingSyncUpdate() @@ -245,7 +244,7 @@ class RustMatrixClient constructor( } } - override fun syncService(): SyncService = syncService + override fun syncService(): SyncService = rustSyncService override fun sessionVerificationService(): SessionVerificationService = verificationService @@ -257,7 +256,7 @@ class RustMatrixClient constructor( sessionCoroutineScope.cancel() client.setDelegate(null) verificationService.destroy() - app.destroy() + syncService.destroy() roomListService.destroy() notificationClient.destroy() client.destroy() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 0600e96f3b..00b7ffbac0 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -180,9 +180,11 @@ class RustMatrixAuthenticationService @Inject constructor( */ } - private fun createMatrixClient(client: Client): MatrixClient { + private suspend fun createMatrixClient(client: Client): MatrixClient { + val syncService = client.syncService().finish() return RustMatrixClient( client = client, + syncService = syncService, sessionStore = sessionStore, appCoroutineScope = appCoroutineScope, dispatchers = coroutineDispatchers, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppStateMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppStateMapper.kt index 7db05f1efd..734041486a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppStateMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppStateMapper.kt @@ -17,8 +17,8 @@ package io.element.android.libraries.matrix.impl.sync import io.element.android.libraries.matrix.api.sync.SyncState -import org.matrix.rustcomponents.sdk.AppState import org.matrix.rustcomponents.sdk.RoomListServiceState +import org.matrix.rustcomponents.sdk.SyncServiceState internal fun RoomListServiceState.toSyncState(): SyncState { return when (this) { @@ -30,10 +30,11 @@ internal fun RoomListServiceState.toSyncState(): SyncState { } } -internal fun AppState.toSyncState(): SyncState { +internal fun SyncServiceState.toSyncState(): SyncState { return when (this) { - AppState.RUNNING -> SyncState.Syncing - AppState.TERMINATED -> SyncState.Terminated - AppState.ERROR -> SyncState.InError + SyncServiceState.IDLE -> SyncState.Idle + SyncServiceState.RUNNING -> SyncState.Syncing + SyncServiceState.TERMINATED -> SyncState.Terminated + SyncServiceState.ERROR -> SyncState.InError } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt index 08accdbe06..ca40ca400c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/RustSyncService.kt @@ -26,24 +26,24 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn -import org.matrix.rustcomponents.sdk.App import org.matrix.rustcomponents.sdk.RoomListServiceState +import org.matrix.rustcomponents.sdk.SyncServiceInterface import timber.log.Timber class RustSyncService( - private val app: App, + private val innerSyncService: SyncServiceInterface, roomListStateFlow: Flow, sessionCoroutineScope: CoroutineScope ) : SyncService { - override fun startSync() = runCatching { + override suspend fun startSync() = runCatching { Timber.v("Start sync") - app.start() + innerSyncService.start() } override fun stopSync() = runCatching { Timber.v("Stop sync") - app.pause() + innerSyncService.pause() } override val syncState: StateFlow = diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppExtension.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SyncServiceExtension.kt similarity index 75% rename from libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppExtension.kt rename to libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SyncServiceExtension.kt index a987081f96..36dabb71f3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/AppExtension.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SyncServiceExtension.kt @@ -21,14 +21,14 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.buffer -import org.matrix.rustcomponents.sdk.App -import org.matrix.rustcomponents.sdk.AppState -import org.matrix.rustcomponents.sdk.AppStateObserver +import org.matrix.rustcomponents.sdk.SyncService +import org.matrix.rustcomponents.sdk.SyncServiceState +import org.matrix.rustcomponents.sdk.SyncServiceStateObserver -fun App.stateFlow(): Flow = +fun SyncService.stateFlow(): Flow = mxCallbackFlow { - val listener = object : AppStateObserver { - override fun onUpdate(state: AppState) { + val listener = object : SyncServiceStateObserver { + override fun onUpdate(state: SyncServiceState) { trySendBlocking(state) } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt index a0e57997d3..5405d3a28a 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/sync/FakeSyncService.kt @@ -29,7 +29,7 @@ class FakeSyncService : SyncService { syncStateFlow.value = SyncState.InError } - override fun startSync(): Result { + override suspend fun startSync(): Result { syncStateFlow.value = SyncState.Syncing return Result.success(Unit) } diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index f9cdf0f3fd..be02663336 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -40,6 +40,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.services.toolbox.impl.strings.AndroidStringProvider import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone @@ -103,7 +104,9 @@ class RoomListScreen( DisposableEffect(Unit) { Timber.w("Start sync!") - matrixClient.syncService().startSync() + runBlocking { + matrixClient.syncService().startSync() + } onDispose { Timber.w("Stop sync!") matrixClient.syncService().stopSync() From 614f97543e278115839df502f5c6ab300e6cf172 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 18 Jul 2023 20:12:51 +0200 Subject: [PATCH 2/3] Update rust sdk to 0.1.34 --- .../features/invitelist/impl/InviteListPresenter.kt | 4 ++-- gradle/libs.versions.toml | 2 +- .../android/libraries/matrix/api/room/MatrixRoom.kt | 4 +--- .../libraries/matrix/impl/room/RustMatrixRoom.kt | 12 +++--------- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt index 735b4a79a2..21a57b48a7 100644 --- a/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt +++ b/features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListPresenter.kt @@ -139,7 +139,7 @@ class InviteListPresenter @Inject constructor( private fun CoroutineScope.acceptInvite(roomId: RoomId, acceptedAction: MutableState>) = launch { suspend { client.getRoom(roomId)?.use { - it.acceptInvitation().getOrThrow() + it.join().getOrThrow() notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId) analyticsService.capture(it.toAnalyticsJoinedRoom(JoinedRoom.Trigger.Invite)) } @@ -150,7 +150,7 @@ class InviteListPresenter @Inject constructor( private fun CoroutineScope.declineInvite(roomId: RoomId, declinedAction: MutableState>) = launch { suspend { client.getRoom(roomId)?.use { - it.rejectInvitation().getOrThrow() + it.leave().getOrThrow() notificationDrawerManager.clearMembershipNotificationForRoom(client.sessionId, roomId) } Unit diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a13a5d5d02..ab03b24342 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -145,7 +145,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" } timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.32" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.34" sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" } sqldelight-driver-jvm = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" } sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt index 6a42aa0a18..f24e347ce9 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt @@ -95,9 +95,7 @@ interface MatrixRoom : Closeable { suspend fun leave(): Result - suspend fun acceptInvitation(): Result - - suspend fun rejectInvitation(): Result + suspend fun join(): Result suspend fun inviteUserById(id: UserId): Result diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index 0b886af8ed..5505ecbe94 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -43,7 +43,6 @@ import io.element.android.libraries.matrix.impl.timeline.RustMatrixTimeline import io.element.android.libraries.matrix.impl.timeline.backPaginationStatusFlow import io.element.android.libraries.matrix.impl.timeline.timelineDiffFlow import io.element.android.libraries.sessionstorage.api.SessionData -import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -82,6 +81,7 @@ class RustMatrixRoom( // Create a dispatcher for all room methods... private val roomDispatcher = coroutineDispatchers.io.limitedParallelism(32) + //...except getMember methods as it could quickly fill the roomDispatcher... private val roomMembersDispatcher = coroutineDispatchers.io.limitedParallelism(8) @@ -257,15 +257,9 @@ class RustMatrixRoom( } } - override suspend fun acceptInvitation(): Result = withContext(roomDispatcher) { + override suspend fun join(): Result = withContext(roomDispatcher) { runCatching { - innerRoom.acceptInvitation() - } - } - - override suspend fun rejectInvitation(): Result = withContext(roomDispatcher) { - runCatching { - innerRoom.rejectInvitation() + innerRoom.join() } } From dfd7f9cc5bcf2753504bcdb2c0718bb1e875d2f0 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 18 Jul 2023 22:27:44 +0200 Subject: [PATCH 3/3] Fix tests --- .../impl/InviteListPresenterTests.kt | 16 ++++------ .../matrix/test/room/FakeMatrixRoom.kt | 29 +++++-------------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/features/invitelist/impl/src/test/kotlin/io/element/android/features/invitelist/impl/InviteListPresenterTests.kt b/features/invitelist/impl/src/test/kotlin/io/element/android/features/invitelist/impl/InviteListPresenterTests.kt index 503e7ad0d7..1dd9068a1f 100644 --- a/features/invitelist/impl/src/test/kotlin/io/element/android/features/invitelist/impl/InviteListPresenterTests.kt +++ b/features/invitelist/impl/src/test/kotlin/io/element/android/features/invitelist/impl/InviteListPresenterTests.kt @@ -211,7 +211,6 @@ class InviteListPresenterTests { skipItems(2) - Truth.assertThat(room.isInviteRejected).isTrue() Truth.assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1) } } @@ -225,7 +224,7 @@ class InviteListPresenterTests { val room = FakeMatrixRoom() val presenter = createPresenter(client) val ex = Throwable("Ruh roh!") - room.givenRejectInviteResult(Result.failure(ex)) + room.givenLeaveRoomError(ex) client.givenGetRoomResult(A_ROOM_ID, room) moleculeFlow(RecompositionClock.Immediate) { @@ -242,7 +241,6 @@ class InviteListPresenterTests { val newState = awaitItem() - Truth.assertThat(room.isInviteRejected).isTrue() Truth.assertThat(newState.declinedAction).isEqualTo(Async.Failure(ex)) } } @@ -256,7 +254,7 @@ class InviteListPresenterTests { val room = FakeMatrixRoom() val presenter = createPresenter(client) val ex = Throwable("Ruh roh!") - room.givenRejectInviteResult(Result.failure(ex)) + room.givenLeaveRoomError(ex) client.givenGetRoomResult(A_ROOM_ID, room) moleculeFlow(RecompositionClock.Immediate) { @@ -298,7 +296,6 @@ class InviteListPresenterTests { val newState = awaitItem() - Truth.assertThat(room.isInviteAccepted).isTrue() Truth.assertThat(newState.acceptedAction).isEqualTo(Async.Success(A_ROOM_ID)) Truth.assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1) } @@ -313,7 +310,7 @@ class InviteListPresenterTests { val room = FakeMatrixRoom() val presenter = createPresenter(client) val ex = Throwable("Ruh roh!") - room.givenAcceptInviteResult(Result.failure(ex)) + room.givenJoinRoomResult(Result.failure(ex)) client.givenGetRoomResult(A_ROOM_ID, room) moleculeFlow(RecompositionClock.Immediate) { @@ -322,10 +319,7 @@ class InviteListPresenterTests { val originalState = awaitItem() originalState.eventSink(InviteListEvents.AcceptInvite(originalState.inviteList[0])) - val newState = awaitItem() - - Truth.assertThat(room.isInviteAccepted).isTrue() - Truth.assertThat(newState.acceptedAction).isEqualTo(Async.Failure(ex)) + Truth.assertThat(awaitItem().acceptedAction).isEqualTo(Async.Failure(ex)) } } @@ -338,7 +332,7 @@ class InviteListPresenterTests { val room = FakeMatrixRoom() val presenter = createPresenter(client) val ex = Throwable("Ruh roh!") - room.givenAcceptInviteResult(Result.failure(ex)) + room.givenJoinRoomResult(Result.failure(ex)) client.givenGetRoomResult(A_ROOM_ID, room) moleculeFlow(RecompositionClock.Immediate) { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt index 176d9109da..fc038b3f0c 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt @@ -63,8 +63,7 @@ class FakeMatrixRoom( private var userDisplayNameResult = Result.success(null) private var userAvatarUrlResult = Result.success(null) private var updateMembersResult: Result = Result.success(Unit) - private var acceptInviteResult = Result.success(Unit) - private var rejectInviteResult = Result.success(Unit) + private var joinRoomResult = Result.success(Unit) private var inviteUserResult = Result.success(Unit) private var canInviteResult = Result.success(true) private val canSendStateResults = mutableMapOf>() @@ -101,11 +100,6 @@ class FakeMatrixRoom( var sendLocationCount: Int = 0 private set - var isInviteAccepted: Boolean = false - private set - - var isInviteRejected: Boolean = false - private set var invitedUserId: UserId? = null private set @@ -196,16 +190,11 @@ class FakeMatrixRoom( return Result.success(Unit) } - override suspend fun leave(): Result = leaveRoomError?.let { Result.failure(it) } ?: Result.success(Unit) + override suspend fun leave(): Result = + leaveRoomError?.let { Result.failure(it) } ?: Result.success(Unit) - override suspend fun acceptInvitation(): Result { - isInviteAccepted = true - return acceptInviteResult - } - - override suspend fun rejectInvitation(): Result { - isInviteRejected = true - return rejectInviteResult + override suspend fun join(): Result { + return joinRoomResult } override suspend fun inviteUserById(id: UserId): Result = simulateLongTask { @@ -316,12 +305,8 @@ class FakeMatrixRoom( userAvatarUrlResult = avatarUrl } - fun givenAcceptInviteResult(result: Result) { - acceptInviteResult = result - } - - fun givenRejectInviteResult(result: Result) { - rejectInviteResult = result + fun givenJoinRoomResult(result: Result) { + joinRoomResult = result } fun givenInviteUserResult(result: Result) {