mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-16 10:30:08 +00:00

Added support for "contact joined" service messages Updated password recovery API Updated Localization APIs Added limited contact presence polling after getDifference
96 lines
3.9 KiB
Swift
96 lines
3.9 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
public final class LocalizationComponent: Equatable, PostboxCoding {
|
|
public let languageCode: String
|
|
public let localizedName: String
|
|
public let localization: Localization
|
|
public let customPluralizationCode: String?
|
|
|
|
public init(languageCode: String, localizedName: String, localization: Localization, customPluralizationCode: String?) {
|
|
self.languageCode = languageCode
|
|
self.localizedName = localizedName
|
|
self.localization = localization
|
|
self.customPluralizationCode = customPluralizationCode
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.languageCode = decoder.decodeStringForKey("lc", orElse: "")
|
|
self.localizedName = decoder.decodeStringForKey("localizedName", orElse: "")
|
|
self.localization = decoder.decodeObjectForKey("loc", decoder: { Localization(decoder: $0) }) as! Localization
|
|
self.customPluralizationCode = decoder.decodeOptionalStringForKey("cpl")
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeString(self.languageCode, forKey: "lc")
|
|
encoder.encodeString(self.localizedName, forKey: "localizedName")
|
|
encoder.encodeObject(self.localization, forKey: "loc")
|
|
if let customPluralizationCode = self.customPluralizationCode {
|
|
encoder.encodeString(customPluralizationCode, forKey: "cpl")
|
|
} else {
|
|
encoder.encodeNil(forKey: "cpl")
|
|
}
|
|
}
|
|
|
|
public static func ==(lhs: LocalizationComponent, rhs: LocalizationComponent) -> Bool {
|
|
if lhs.languageCode != rhs.languageCode {
|
|
return false
|
|
}
|
|
if lhs.localizedName != rhs.localizedName {
|
|
return false
|
|
}
|
|
if lhs.localization != rhs.localization {
|
|
return false
|
|
}
|
|
if lhs.customPluralizationCode != rhs.customPluralizationCode {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
public final class LocalizationSettings: PreferencesEntry, Equatable {
|
|
public let primaryComponent: LocalizationComponent
|
|
public let secondaryComponent: LocalizationComponent?
|
|
|
|
public init(primaryComponent: LocalizationComponent, secondaryComponent: LocalizationComponent?) {
|
|
self.primaryComponent = primaryComponent
|
|
self.secondaryComponent = secondaryComponent
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
if let languageCode = decoder.decodeOptionalStringForKey("lc") {
|
|
self.primaryComponent = LocalizationComponent(languageCode: languageCode, localizedName: "", localization: decoder.decodeObjectForKey("loc", decoder: { Localization(decoder: $0) }) as! Localization, customPluralizationCode: nil)
|
|
self.secondaryComponent = nil
|
|
} else {
|
|
self.primaryComponent = decoder.decodeObjectForKey("primaryComponent", decoder: { LocalizationComponent(decoder: $0) }) as! LocalizationComponent
|
|
self.secondaryComponent = decoder.decodeObjectForKey("secondaryComponent", decoder: { LocalizationComponent(decoder: $0) }) as? LocalizationComponent
|
|
}
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeObject(self.primaryComponent, forKey: "primaryComponent")
|
|
if let secondaryComponent = self.secondaryComponent {
|
|
encoder.encodeObject(secondaryComponent, forKey: "secondaryComponent")
|
|
} else {
|
|
encoder.encodeNil(forKey: "secondaryComponent")
|
|
}
|
|
}
|
|
|
|
public func isEqual(to: PreferencesEntry) -> Bool {
|
|
if let to = to as? LocalizationSettings {
|
|
return self == to
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
public static func ==(lhs: LocalizationSettings, rhs: LocalizationSettings) -> Bool {
|
|
return lhs.primaryComponent == rhs.primaryComponent && lhs.secondaryComponent == rhs.secondaryComponent
|
|
}
|
|
}
|