Skip to content
Snippets Groups Projects
Commit 2db62fdb authored by Taras's avatar Taras
Browse files

Implement refreshToken in DefaultAuthService

parent bb15ac19
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ import org.matrix.android.sdk.api.auth.login.LoginWizard
import org.matrix.android.sdk.api.auth.registration.RegistrationWizard
import org.matrix.android.sdk.api.auth.wellknown.WellknownResult
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.internal.auth.login.RefreshedTokenInfo
/**
* This interface defines methods to authenticate or to create an account to a matrix server.
......@@ -165,4 +166,9 @@ interface AuthenticationService {
* Added for switch user
*/
suspend fun removeSession(sessionId: String)
/**
* Added for Circles
*/
suspend fun refreshToken(sessionId: String): RefreshedTokenInfo
}
......@@ -42,6 +42,8 @@ import org.matrix.android.sdk.internal.auth.db.PendingSessionData
import org.matrix.android.sdk.internal.auth.login.DefaultLoginWizard
import org.matrix.android.sdk.internal.auth.login.DirectLoginTask
import org.matrix.android.sdk.internal.auth.login.QrLoginTokenTask
import org.matrix.android.sdk.internal.auth.login.RefreshTokenParams
import org.matrix.android.sdk.internal.auth.login.RefreshedTokenInfo
import org.matrix.android.sdk.internal.auth.registration.DefaultRegistrationWizard
import org.matrix.android.sdk.internal.auth.version.Versions
import org.matrix.android.sdk.internal.auth.version.doesServerSupportLogoutDevices
......@@ -501,4 +503,29 @@ internal class DefaultAuthenticationService @Inject constructor(
override suspend fun removeSession(sessionId: String) {
sessionManager.removeSession(sessionId)
}
//Added for Circles
override suspend fun refreshToken(sessionId: String): RefreshedTokenInfo {
val sessionParams = sessionParamsStore.get(sessionId) ?: throw IllegalArgumentException(
"Session params for session $sessionId not found"
)
val authAPI = buildAuthAPI(sessionParams.homeServerConnectionConfig)
val sessionCredentials = sessionParamsStore.get(sessionId)?.credentials ?: throw IllegalArgumentException(
"Credentials for session $sessionId not found"
)
val sessionRefreshToken = sessionCredentials.refreshToken ?: throw IllegalArgumentException(
"Refresh token for session $sessionId not found"
)
val refreshTokenInfo = executeRequest(null) {
authAPI.refreshToken(RefreshTokenParams(sessionRefreshToken))
}
val newCredentials = sessionCredentials.copy(
accessToken = refreshTokenInfo.accessToken,
refreshToken = refreshTokenInfo.refreshToken,
expiresInMs = refreshTokenInfo.expiresInMs
)
sessionParamsStore.updateCredentials(newCredentials)
return refreshTokenInfo
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment