Makes MatrixClient Closeable outside of logout function.

This commit is contained in:
ganfra 2023-03-30 20:52:32 +02:00
parent 3a8ff32f0e
commit cfefe89b3e
3 changed files with 7 additions and 4 deletions

View file

@ -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.MatrixRoom
import io.element.android.libraries.matrix.api.room.RoomSummaryDataSource import io.element.android.libraries.matrix.api.room.RoomSummaryDataSource
import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import java.io.Closeable
interface MatrixClient { interface MatrixClient : Closeable {
val sessionId: SessionId val sessionId: SessionId
val roomSummaryDataSource: RoomSummaryDataSource val roomSummaryDataSource: RoomSummaryDataSource
fun getRoom(roomId: RoomId): MatrixRoom? fun getRoom(roomId: RoomId): MatrixRoom?

View file

@ -170,7 +170,7 @@ class RustMatrixClient constructor(
} }
} }
private fun close() { override fun close() {
slidingSyncUpdateJob?.cancel() slidingSyncUpdateJob?.cancel()
stopSync() stopSync()
slidingSync.setObserver(null) slidingSync.setObserver(null)
@ -179,10 +179,10 @@ class RustMatrixClient constructor(
visibleRoomsSlidingSyncList.destroy() visibleRoomsSlidingSyncList.destroy()
slidingSync.destroy() slidingSync.destroy()
verificationService.destroy() verificationService.destroy()
client.destroy()
} }
override suspend fun logout() = withContext(dispatchers.io) { override suspend fun logout() = withContext(dispatchers.io) {
close()
try { try {
client.logout() client.logout()
} catch (failure: Throwable) { } catch (failure: Throwable) {
@ -190,7 +190,7 @@ class RustMatrixClient constructor(
} }
baseDirectory.deleteSessionDirectory(userID = client.userId()) baseDirectory.deleteSessionDirectory(userID = client.userId())
sessionStore.removeSession(client.userId()) sessionStore.removeSession(client.userId())
client.destroy() close()
} }
override suspend fun loadUserDisplayName(): Result<String> = withContext(dispatchers.io) { override suspend fun loadUserDisplayName(): Result<String> = withContext(dispatchers.io) {

View file

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