SignedOut mode - WIP
This commit is contained in:
parent
8305912b14
commit
124d6bf95f
13 changed files with 105 additions and 41 deletions
|
|
@ -126,7 +126,16 @@ class RustMatrixClient constructor(
|
|||
Timber.v("didReceiveAuthError -> do the cleanup")
|
||||
//TODO handle isSoftLogout parameter.
|
||||
appCoroutineScope.launch {
|
||||
doLogout(doRequest = false)
|
||||
val existingData = sessionStore.getSession(client.userId())
|
||||
if (existingData != null) {
|
||||
// Set isTokenValid to false
|
||||
val newData = client.session().toSessionData(
|
||||
isTokenValid = false,
|
||||
loginType = existingData.loginType,
|
||||
)
|
||||
sessionStore.updateData(newData)
|
||||
}
|
||||
doLogout(doRequest = false, removeSession = false)
|
||||
}
|
||||
} else {
|
||||
Timber.v("didReceiveAuthError -> already cleaning up")
|
||||
|
|
@ -333,9 +342,9 @@ class RustMatrixClient constructor(
|
|||
baseDirectory.deleteSessionDirectory(userID = sessionId.value, deleteCryptoDb = false)
|
||||
}
|
||||
|
||||
override suspend fun logout(): String? = doLogout(doRequest = true)
|
||||
override suspend fun logout(): String? = doLogout(doRequest = true, removeSession = true)
|
||||
|
||||
private suspend fun doLogout(doRequest: Boolean): String? {
|
||||
private suspend fun doLogout(doRequest: Boolean, removeSession: Boolean): String? {
|
||||
var result: String? = null
|
||||
withContext(sessionDispatcher) {
|
||||
if (doRequest) {
|
||||
|
|
@ -347,7 +356,9 @@ class RustMatrixClient constructor(
|
|||
}
|
||||
close()
|
||||
baseDirectory.deleteSessionDirectory(userID = sessionId.value, deleteCryptoDb = true)
|
||||
sessionStore.removeSession(sessionId.value)
|
||||
if (removeSession) {
|
||||
sessionStore.removeSession(sessionId.value)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import io.element.android.libraries.matrix.impl.RustMatrixClientFactory
|
|||
import io.element.android.libraries.matrix.impl.exception.mapClientException
|
||||
import io.element.android.libraries.matrix.impl.mapper.toSessionData
|
||||
import io.element.android.libraries.network.useragent.UserAgentProvider
|
||||
import io.element.android.libraries.sessionstorage.api.LoggedInState
|
||||
import io.element.android.libraries.sessionstorage.api.LoginType
|
||||
import io.element.android.libraries.sessionstorage.api.SessionStore
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
|
@ -63,7 +64,7 @@ class RustMatrixAuthenticationService @Inject constructor(
|
|||
)
|
||||
private var currentHomeserver = MutableStateFlow<MatrixHomeServerDetails?>(null)
|
||||
|
||||
override fun isLoggedIn(): Flow<Boolean> {
|
||||
override fun loggedInStateFlow(): Flow<LoggedInState> {
|
||||
return sessionStore.isLoggedIn()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue