Swiftgram/submodules/SyncCore/Sources/TelegramMediaContact.swift
2019-10-21 16:58:00 +04:00

66 lines
2.3 KiB
Swift

import Postbox
public final class TelegramMediaContact: Media {
public let id: MediaId? = nil
public let firstName: String
public let lastName: String
public let phoneNumber: String
public let peerId: PeerId?
public let vCardData: String?
public let peerIds: [PeerId]
public init(firstName: String, lastName: String, phoneNumber: String, peerId: PeerId?, vCardData: String?) {
self.firstName = firstName
self.lastName = lastName
self.phoneNumber = phoneNumber
self.peerId = peerId
self.vCardData = vCardData
if let peerId = peerId {
self.peerIds = [peerId]
} else {
self.peerIds = []
}
}
public init(decoder: PostboxDecoder) {
self.firstName = decoder.decodeStringForKey("n.f", orElse: "")
self.lastName = decoder.decodeStringForKey("n.l", orElse: "")
self.phoneNumber = decoder.decodeStringForKey("pn", orElse: "")
if let peerIdValue = decoder.decodeOptionalInt64ForKey("p") {
self.peerId = PeerId(peerIdValue)
self.peerIds = [PeerId(peerIdValue)]
} else {
self.peerId = nil
self.peerIds = []
}
self.vCardData = decoder.decodeOptionalStringForKey("vc")
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeString(self.firstName, forKey: "n.f")
encoder.encodeString(self.lastName, forKey: "n.l")
encoder.encodeString(self.phoneNumber, forKey: "pn")
if let peerId = self.peerId {
encoder.encodeInt64(peerId.toInt64(), forKey: "p")
}
if let vCardData = self.vCardData {
encoder.encodeString(vCardData, forKey: "vc")
} else {
encoder.encodeNil(forKey: "vc")
}
}
public func isEqual(to other: Media) -> Bool {
if let other = other as? TelegramMediaContact {
if self.id == other.id && self.firstName == other.firstName && self.lastName == other.lastName && self.phoneNumber == other.phoneNumber && self.peerId == other.peerId && self.vCardData == other.vCardData && self.peerIds == other.peerIds {
return true
}
}
return false
}
public func isSemanticallyEqual(to other: Media) -> Bool {
return self.isEqual(to: other)
}
}