Add first refresh token implementation pass. Account credential persistence and NotificationService handling.

This commit is contained in:
David Langley
2021-12-09 17:28:56 +00:00
parent 327239685a
commit 947290b6a7
5 changed files with 48 additions and 3 deletions
@@ -1771,7 +1771,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
{
isPauseRequested = NO;
}
else if (mxSession.state == MXSessionStateUnknownToken)
else if (mxSession.state == MXSessionStateUnauthenticated)
{
// Logout this account
[[MXKAccountManager sharedManager] removeAccount:self completion:nil];
@@ -2225,4 +2225,29 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
}
}
#pragma mark - Homeserver Access/Refresh Token updates
- (void)registerRestClientDidRefreshTokensNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRestClientDidRefreshTokensNotification:) name:MXRestClientDidRefreshTokensNotification object:nil];
}
- (void)handleRestClientDidRefreshTokensNotification:(NSNotification*)notification
{
NSDictionary *userInfo = notification.userInfo;
NSString *userId = userInfo[MXIdentityServiceNotificationUserIdKey];
NSString *identityServer = userInfo[MXIdentityServiceNotificationIdentityServerKey];
NSString *accessToken = userInfo[MXIdentityServiceNotificationAccessTokenKey];
if (userId && identityServer && accessToken && [mxCredentials.identityServer isEqualToString:identityServer])
{
mxCredentials.identityServerAccessToken = accessToken;
// Archive updated field
[[MXKAccountManager sharedManager] saveAccounts];
}
}
@end