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 a2bb693a56..9ce5502843 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 @@ -22,8 +22,9 @@ import io.element.android.libraries.matrix.api.media.MediaResolver import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.RoomSummaryDataSource import io.element.android.libraries.matrix.api.verification.SessionVerificationService +import java.io.Closeable -interface MatrixClient { +interface MatrixClient : Closeable { val sessionId: SessionId val roomSummaryDataSource: RoomSummaryDataSource fun getRoom(roomId: RoomId): MatrixRoom? 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 dcdaffd97a..378fec56c7 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 @@ -170,7 +170,7 @@ class RustMatrixClient constructor( } } - private fun close() { + override fun close() { slidingSyncUpdateJob?.cancel() stopSync() slidingSync.setObserver(null) @@ -179,10 +179,10 @@ class RustMatrixClient constructor( visibleRoomsSlidingSyncList.destroy() slidingSync.destroy() verificationService.destroy() + client.destroy() } override suspend fun logout() = withContext(dispatchers.io) { - close() try { client.logout() } catch (failure: Throwable) { @@ -190,7 +190,7 @@ class RustMatrixClient constructor( } baseDirectory.deleteSessionDirectory(userID = client.userId()) sessionStore.removeSession(client.userId()) - client.destroy() + close() } override suspend fun loadUserDisplayName(): Result = withContext(dispatchers.io) { 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 c7427f9497..9272e794b4 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 @@ -60,6 +60,8 @@ class FakeMatrixClient( logoutFailure?.let { throw it } } + override fun close() = Unit + override suspend fun loadUserDisplayName(): Result { return userDisplayName }