Browse Source

Merge pull request #279 from vector-im/feature/fga/close_client

Makes MatrixClient Closeable outside of logout function.
test/jme/compound-poc
Benoit Marty 1 year ago committed by GitHub
parent
commit
0aaabe2376
  1. 3
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt
  2. 6
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  3. 2
      libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt

3
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 @@ -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?

6
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

@ -170,7 +170,7 @@ class RustMatrixClient constructor( @@ -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( @@ -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( @@ -190,7 +190,7 @@ class RustMatrixClient constructor(
}
baseDirectory.deleteSessionDirectory(userID = client.userId())
sessionStore.removeSession(client.userId())
client.destroy()
close()
}
override suspend fun loadUserDisplayName(): Result<String> = withContext(dispatchers.io) {

2
libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt

@ -60,6 +60,8 @@ class FakeMatrixClient( @@ -60,6 +60,8 @@ class FakeMatrixClient(
logoutFailure?.let { throw it }
}
override fun close() = Unit
override suspend fun loadUserDisplayName(): Result<String> {
return userDisplayName
}

Loading…
Cancel
Save