Swiftgram/submodules/SyncCore/Sources/WalletCollection.swift

57 lines
1.7 KiB
Swift

import Foundation
import Postbox
public struct WalletCollectionItem: Equatable, PostboxCoding {
public let info: Data
public var exportCompleted: Bool
public var state: Data?
public init(info: Data, exportCompleted: Bool, state: Data?) {
self.info = info
self.exportCompleted = exportCompleted
self.state = state
}
public init(decoder: PostboxDecoder) {
self.info = decoder.decodeDataForKey("info") ?? Data()
self.exportCompleted = decoder.decodeInt32ForKey("exportCompleted", orElse: 0) != 0
self.state = decoder.decodeDataForKey("state")
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeData(self.info, forKey: "info")
encoder.encodeInt32(self.exportCompleted ? 1 : 0, forKey: "exportCompleted")
if let state = self.state {
encoder.encodeData(state, forKey: "state")
} else {
encoder.encodeNil(forKey: "state")
}
}
}
public struct WalletCollection: PreferencesEntry {
public var wallets: [WalletCollectionItem]
public init(wallets: [WalletCollectionItem]) {
self.wallets = wallets
}
public init(decoder: PostboxDecoder) {
self.wallets = decoder.decodeObjectArrayWithDecoderForKey("wallets")
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeObjectArray(self.wallets, forKey: "wallets")
}
public func isEqual(to: PreferencesEntry) -> Bool {
guard let other = to as? WalletCollection else {
return false
}
if self.wallets != other.wallets {
return false
}
return true
}
}