diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/LogoutUseCase.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/LogoutUseCase.kt index 608d74e2763..138881a36fb 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/LogoutUseCase.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/LogoutUseCase.kt @@ -77,7 +77,10 @@ internal class LogoutUseCaseImpl @Suppress("LongParameterList") constructor( endCallUseCase(it.conversationId) } - logoutRepository.logout() + if(reason != LogoutReason.SESSION_EXPIRED) { + logoutRepository.logout() + } + sessionRepository.logout(userId = userId, reason) logoutRepository.onLogout(reason) userSessionWorkScheduler.cancelScheduledSendingOfPendingMessages() diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/network/SessionManagerImpl.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/network/SessionManagerImpl.kt index 89c6f01ccc4..d2ef0df39b3 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/network/SessionManagerImpl.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/network/SessionManagerImpl.kt @@ -66,18 +66,14 @@ class SessionManagerImpl internal constructor( private var serverConfig: ServerConfigDTO? = null - override suspend fun session(): SessionDTO = withContext(coroutineContext) { + override suspend fun session(): SessionDTO? = withContext(coroutineContext) { wrapStorageRequest { tokenStorage.getToken(userId.toDao()) } .map { sessionMapper.fromEntityToSessionDTO(it) } - .fold( + .nullableFold( { - error( - """SESSION MANAGER: - |"error": "missing user session", - |"cause": "$it" """.trimMargin() - ) + logout(LogoutReason.SESSION_EXPIRED) + null }, { session -> - kaliumLogger.i("_TOKEN_ FOUND SESSION = $session") session } ) diff --git a/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt b/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt index bca0beb3bc2..81aea5e7345 100644 --- a/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt +++ b/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt @@ -48,7 +48,6 @@ import com.wire.kalium.network.api.v2.authenticated.networkContainer.Authenticat import com.wire.kalium.network.api.v3.authenticated.networkContainer.AuthenticatedNetworkContainerV3 import com.wire.kalium.network.api.v4.authenticated.networkContainer.AuthenticatedNetworkContainerV4 import com.wire.kalium.network.api.v5.authenticated.networkContainer.AuthenticatedNetworkContainerV5 -import com.wire.kalium.network.kaliumLogger import com.wire.kalium.network.session.CertificatePinning import com.wire.kalium.network.session.SessionManager import com.wire.kalium.network.tools.ServerConfigDTO @@ -202,8 +201,9 @@ internal class AuthenticatedHttpClientProviderImpl( } private val loadToken: suspend () -> BearerTokens? = { - val session = sessionManager.session() ?: error("missing user session") - BearerTokens(accessToken = session.accessToken, refreshToken = session.refreshToken) + sessionManager.session()?.let {session -> + BearerTokens(accessToken = session.accessToken, refreshToken = session.refreshToken) + } } private val refreshToken: suspend RefreshTokensParams.() -> BearerTokens = { diff --git a/network/src/commonMain/kotlin/com/wire/kalium/network/utils/CustomErrors.kt b/network/src/commonMain/kotlin/com/wire/kalium/network/utils/CustomErrors.kt index 70e9b0882a8..e02d45e7282 100644 --- a/network/src/commonMain/kotlin/com/wire/kalium/network/utils/CustomErrors.kt +++ b/network/src/commonMain/kotlin/com/wire/kalium/network/utils/CustomErrors.kt @@ -27,7 +27,7 @@ object CustomErrors { NetworkResponse.Error( KaliumException.ServerError( ErrorResponse( - 500, + -1, "no cookie was found", NetworkErrorLabel.KaliumCustom.MISSING_REFRESH_TOKEN ) @@ -38,7 +38,7 @@ object CustomErrors { NetworkResponse.Error( KaliumException.ServerError( ErrorResponse( - 500, + -2, "no nonce found", NetworkErrorLabel.KaliumCustom.MISSING_NONCE )