element-ios/Riot/Modules/MatrixKit/Models/Account/MXKAccountData.m

150 lines
5.1 KiB
Objective-C

//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import <Foundation/Foundation.h>
#import "MXKAccountData.h"
@interface MXKAccountData ()
@end
@implementation MXKAccountData
@synthesize mxCredentials = _mxCredentials;
#pragma mark - NSCoding
- (id)initWithCoder:(NSCoder *)coder
{
self = [super init];
if (self)
{
NSString *homeServerURL = [coder decodeObjectForKey:@"homeserverurl"];
NSString *userId = [coder decodeObjectForKey:@"userid"];
NSString *accessToken = [coder decodeObjectForKey:@"accesstoken"];
_identityServerURL = [coder decodeObjectForKey:@"identityserverurl"];
NSString *identityServerAccessToken = [coder decodeObjectForKey:@"identityserveraccesstoken"];
_mxCredentials = [[MXCredentials alloc] initWithHomeServer:homeServerURL
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"];
_mxCredentials.allowedCertificate = [coder decodeObjectForKey:@"allowedCertificate"];
if ([coder decodeObjectForKey:@"threePIDs"])
{
_threePIDs = [coder decodeObjectForKey:@"threePIDs"];
}
if ([coder decodeObjectForKey:@"device"])
{
_device = [coder decodeObjectForKey:@"device"];
}
if ([coder decodeObjectForKey:@"antivirusserverurl"])
{
_antivirusServerURL = [coder decodeObjectForKey:@"antivirusserverurl"];
}
if ([coder decodeObjectForKey:@"pushgatewayurl"])
{
_pushGatewayURL = [coder decodeObjectForKey:@"pushgatewayurl"];
}
_hasPusherForPushNotifications = [coder decodeBoolForKey:@"_enablePushNotifications"];
_hasPusherForPushKitNotifications = [coder decodeBoolForKey:@"enablePushKitNotifications"];
_enableInAppNotifications = [coder decodeBoolForKey:@"enableInAppNotifications"];
_disabled = [coder decodeBoolForKey:@"disabled"];
_isSoftLogout = [coder decodeBoolForKey:@"isSoftLogout"];
_warnedAboutEncryption = [coder decodeBoolForKey:@"warnedAboutEncryption"];
_others = [coder decodeObjectForKey:@"others"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:_mxCredentials.homeServer forKey:@"homeserverurl"];
[coder encodeObject:_mxCredentials.userId forKey:@"userid"];
[coder encodeObject:_mxCredentials.accessToken forKey:@"accesstoken"];
if (self.mxCredentials.accessTokenExpiresAt) {
[coder encodeInt64:_mxCredentials.accessTokenExpiresAt forKey:@"accessTokenExpiresAt"];
}
if (self.mxCredentials.refreshToken) {
[coder encodeObject:_mxCredentials.refreshToken forKey:@"refreshToken"];
}
[coder encodeObject:_mxCredentials.identityServerAccessToken forKey:@"identityserveraccesstoken"];
if (self.mxCredentials.deviceId)
{
[coder encodeObject:_mxCredentials.deviceId forKey:@"deviceId"];
}
if (self.mxCredentials.allowedCertificate)
{
[coder encodeObject:_mxCredentials.allowedCertificate forKey:@"allowedCertificate"];
}
if (self.threePIDs)
{
[coder encodeObject:_threePIDs forKey:@"threePIDs"];
}
if (self.device)
{
[coder encodeObject:_device forKey:@"device"];
}
if (self.identityServerURL)
{
[coder encodeObject:_identityServerURL forKey:@"identityserverurl"];
}
if (self.antivirusServerURL)
{
[coder encodeObject:_antivirusServerURL forKey:@"antivirusserverurl"];
}
if (self.pushGatewayURL)
{
[coder encodeObject:_pushGatewayURL forKey:@"pushgatewayurl"];
}
[coder encodeBool:_hasPusherForPushNotifications forKey:@"_enablePushNotifications"];
[coder encodeBool:_hasPusherForPushKitNotifications forKey:@"enablePushKitNotifications"];
[coder encodeBool:_enableInAppNotifications forKey:@"enableInAppNotifications"];
[coder encodeBool:_disabled forKey:@"disabled"];
[coder encodeBool:_isSoftLogout forKey:@"isSoftLogout"];
[coder encodeBool:_warnedAboutEncryption forKey:@"warnedAboutEncryption"];
[coder encodeObject:_others forKey:@"others"];
}
@end