Backup more data

This commit is contained in:
Ali
2021-12-22 11:31:48 +04:00
parent 3db9593f49
commit e85144997f
2 changed files with 94 additions and 2 deletions

View File

@@ -2,12 +2,39 @@ import Foundation
import Postbox
public struct AccountBackupData: Codable, Equatable {
private enum CodingKeys: String, CodingKey {
case masterDatacenterId
case peerId
case masterDatacenterKey
case masterDatacenterKeyId
case notificationEncryptionKeyId
case notificationEncryptionKey
case additionalDatacenterKeys
}
public struct DatacenterKey: Codable, Equatable {
public var id: Int32
public var keyId: Int64
public var key: Data
public init(
id: Int32,
keyId: Int64,
key: Data
) {
self.id = id
self.keyId = keyId
self.key = key
}
}
public var masterDatacenterId: Int32
public var peerId: Int64
public var masterDatacenterKey: Data
public var masterDatacenterKeyId: Int64
public var notificationEncryptionKeyId: Data?
public var notificationEncryptionKey: Data?
public var additionalDatacenterKeys: [Int32: DatacenterKey]
public init(
masterDatacenterId: Int32,
@@ -15,7 +42,8 @@ public struct AccountBackupData: Codable, Equatable {
masterDatacenterKey: Data,
masterDatacenterKeyId: Int64,
notificationEncryptionKeyId: Data?,
notificationEncryptionKey: Data?
notificationEncryptionKey: Data?,
additionalDatacenterKeys: [Int32: DatacenterKey]
) {
self.masterDatacenterId = masterDatacenterId
self.peerId = peerId
@@ -23,6 +51,31 @@ public struct AccountBackupData: Codable, Equatable {
self.masterDatacenterKeyId = masterDatacenterKeyId
self.notificationEncryptionKeyId = notificationEncryptionKeyId
self.notificationEncryptionKey = notificationEncryptionKey
self.additionalDatacenterKeys = additionalDatacenterKeys
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.masterDatacenterId = try container.decode(Int32.self, forKey: .masterDatacenterId)
self.peerId = try container.decode(Int64.self, forKey: .peerId)
self.masterDatacenterKey = try container.decode(Data.self, forKey: .masterDatacenterKey)
self.masterDatacenterKeyId = try container.decode(Int64.self, forKey: .masterDatacenterKeyId)
self.notificationEncryptionKeyId = try container.decodeIfPresent(Data.self, forKey: .notificationEncryptionKeyId)
self.notificationEncryptionKey = try container.decodeIfPresent(Data.self, forKey: .notificationEncryptionKey)
self.additionalDatacenterKeys = try container.decodeIfPresent([Int32: DatacenterKey].self, forKey: .additionalDatacenterKeys) ?? [:]
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(self.masterDatacenterId, forKey: .masterDatacenterId)
try container.encode(self.peerId, forKey: .peerId)
try container.encode(self.masterDatacenterKey, forKey: .masterDatacenterKey)
try container.encode(self.masterDatacenterKeyId, forKey: .masterDatacenterKeyId)
try container.encodeIfPresent(self.notificationEncryptionKeyId, forKey: .notificationEncryptionKeyId)
try container.encodeIfPresent(self.notificationEncryptionKey, forKey: .notificationEncryptionKey)
try container.encode(self.additionalDatacenterKeys, forKey: .additionalDatacenterKeys)
}
}