mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 08:31:13 +00:00

git-subtree-dir: submodules/TelegramCore git-subtree-mainline: 971273e8f8f49a47f14b251d2f35e3445a61fc3f git-subtree-split: 9561227540acef69894e6546395ab223a6233600
56 lines
2.0 KiB
Swift
56 lines
2.0 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
final class SynchronizeEmojiKeywordsOperation: PostboxCoding {
|
|
let inputLanguageCode: String
|
|
let languageCode: String?
|
|
let fromVersion: Int32?
|
|
|
|
init(inputLanguageCode: String, languageCode: String?, fromVersion: Int32?) {
|
|
self.inputLanguageCode = inputLanguageCode
|
|
self.languageCode = languageCode
|
|
self.fromVersion = fromVersion
|
|
}
|
|
|
|
init(decoder: PostboxDecoder) {
|
|
self.inputLanguageCode = decoder.decodeStringForKey("ilc", orElse: "")
|
|
self.languageCode = decoder.decodeOptionalStringForKey("lc")
|
|
self.fromVersion = decoder.decodeOptionalInt32ForKey("v")
|
|
}
|
|
|
|
func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeString(self.inputLanguageCode, forKey: "ilc")
|
|
if let languageCode = self.languageCode {
|
|
encoder.encodeString(languageCode, forKey: "lc")
|
|
} else {
|
|
encoder.encodeNil(forKey: "lc")
|
|
}
|
|
if let fromVersion = self.fromVersion {
|
|
encoder.encodeInt32(fromVersion, forKey: "v")
|
|
} else {
|
|
encoder.encodeNil(forKey: "v")
|
|
}
|
|
}
|
|
}
|
|
|
|
func addSynchronizeEmojiKeywordsOperation(transaction: Transaction, inputLanguageCode: String, languageCode: String?, fromVersion: Int32?) {
|
|
let tag = OperationLogTags.SynchronizeEmojiKeywords
|
|
let peerId = PeerId(emojiKeywordColletionIdForCode(inputLanguageCode).id)
|
|
|
|
var hasExistingOperation = false
|
|
transaction.operationLogEnumerateEntries(peerId: peerId, tag: tag) { entry -> Bool in
|
|
hasExistingOperation = true
|
|
return false
|
|
}
|
|
|
|
guard !hasExistingOperation else {
|
|
return
|
|
}
|
|
let operationContents = SynchronizeEmojiKeywordsOperation(inputLanguageCode: inputLanguageCode, languageCode: languageCode, fromVersion: fromVersion)
|
|
transaction.operationLogAddEntry(peerId: peerId, tag: tag, tagLocalIndex: .automatic, tagMergedIndex: .automatic, contents: operationContents)
|
|
}
|