mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 07:42:40 +00:00
Fix refresh token coding and persistence.
This commit is contained in:
parent
2fbd129456
commit
b09cf74224
2 changed files with 23 additions and 25 deletions
|
@ -187,6 +187,8 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
|
|||
userId:userId
|
||||
accessToken:accessToken];
|
||||
|
||||
mxCredentials.accessTokenExpiresAt = [coder decodeInt64ForKey:@"accessTokenExpiresAt"];
|
||||
mxCredentials.refreshToken = [coder decodeObjectForKey:@"refreshToken"];
|
||||
mxCredentials.identityServer = _identityServerURL;
|
||||
mxCredentials.identityServerAccessToken = identityServerAccessToken;
|
||||
mxCredentials.deviceId = [coder decodeObjectForKey:@"deviceId"];
|
||||
|
@ -242,6 +244,12 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
|
|||
[coder encodeObject:mxCredentials.homeServer forKey:@"homeserverurl"];
|
||||
[coder encodeObject:mxCredentials.userId forKey:@"userid"];
|
||||
[coder encodeObject:mxCredentials.accessToken forKey:@"accesstoken"];
|
||||
if (mxCredentials.accessTokenExpiresAt) {
|
||||
[coder encodeInt64:mxCredentials.accessTokenExpiresAt forKey:@"accessTokenExpiresAt"];
|
||||
}
|
||||
if (mxCredentials.refreshToken) {
|
||||
[coder encodeObject:mxCredentials.refreshToken forKey:@"refreshToken"];
|
||||
}
|
||||
[coder encodeObject:mxCredentials.identityServerAccessToken forKey:@"identityserveraccesstoken"];
|
||||
|
||||
if (mxCredentials.deviceId)
|
||||
|
@ -2225,29 +2233,4 @@ 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
|
||||
|
|
|
@ -66,6 +66,8 @@ NSString *const MXKAccountManagerDataType = @"org.matrix.kit.MXKAccountManagerDa
|
|||
|
||||
// Load existing accounts from local storage
|
||||
[self loadAccounts];
|
||||
|
||||
[self registerRestClientDidRefreshTokensNotification];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -723,4 +725,17 @@ NSString *const MXKAccountManagerDataType = @"org.matrix.kit.MXKAccountManagerDa
|
|||
}
|
||||
}
|
||||
|
||||
#pragma mark - Homeserver Access/Refresh Token updates
|
||||
|
||||
- (void)registerRestClientDidRefreshTokensNotification
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRestClientDidRefreshTokensNotification:) name:MXRestClientDidRefreshTokensNotification object:nil];
|
||||
}
|
||||
|
||||
- (void)handleRestClientDidRefreshTokensNotification:(NSNotification*)notification
|
||||
{
|
||||
[self saveAccounts];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in a new issue