Swiftgram/submodules/TelegramCore/TelegramCore/SuggestedLocalizationEntry.swift
Peter 5c1613d104 Add 'submodules/TelegramCore/' from commit '9561227540acef69894e6546395ab223a6233600'
git-subtree-dir: submodules/TelegramCore
git-subtree-mainline: 971273e8f8f49a47f14b251d2f35e3445a61fc3f
git-subtree-split: 9561227540acef69894e6546395ab223a6233600
2019-06-11 18:59:08 +01:00

56 lines
1.9 KiB
Swift

import Foundation
#if os(macOS)
import PostboxMac
import SwiftSignalKitMac
#else
import Postbox
import SwiftSignalKit
#endif
public final class SuggestedLocalizationEntry: PreferencesEntry {
public let languageCode: String
public let isSeen: Bool
init(languageCode: String, isSeen: Bool) {
self.languageCode = languageCode
self.isSeen = isSeen
}
public init(decoder: PostboxDecoder) {
self.languageCode = decoder.decodeStringForKey("lc", orElse: "en")
self.isSeen = decoder.decodeInt32ForKey("s", orElse: 0) != 0
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeString(self.languageCode, forKey: "lc")
encoder.encodeInt32(self.isSeen ? 1 : 0, forKey: "s")
}
public func isEqual(to: PreferencesEntry) -> Bool {
if let to = to as? SuggestedLocalizationEntry {
return self == to
} else {
return false
}
}
public static func ==(lhs: SuggestedLocalizationEntry, rhs: SuggestedLocalizationEntry) -> Bool {
return lhs.languageCode == rhs.languageCode && lhs.isSeen == rhs.isSeen
}
}
public func markSuggestedLocalizationAsSeenInteractively(postbox: Postbox, languageCode: String) -> Signal<Void, NoError> {
return postbox.transaction { transaction -> Void in
transaction.updatePreferencesEntry(key: PreferencesKeys.suggestedLocalization, { current in
if let current = current as? SuggestedLocalizationEntry {
if current.languageCode == languageCode, !current.isSeen {
return SuggestedLocalizationEntry(languageCode: languageCode, isSeen: true)
}
} else {
return SuggestedLocalizationEntry(languageCode: languageCode, isSeen: true)
}
return current
})
}
}