Swiftgram/TelegramCore/SynchronizeConsumeMessageContentsOperation.swift
2017-08-29 17:20:33 +03:00

40 lines
1.6 KiB
Swift

import Foundation
#if os(macOS)
import PostboxMac
#else
import Postbox
#endif
final class SynchronizeConsumeMessageContentsOperation: PostboxCoding {
let messageIds: [MessageId]
init(messageIds: [MessageId]) {
self.messageIds = messageIds
}
init(decoder: PostboxDecoder) {
self.messageIds = MessageId.decodeArrayFromBuffer(decoder.decodeBytesForKeyNoCopy("i")!)
}
func encode(_ encoder: PostboxEncoder) {
let buffer = WriteBuffer()
MessageId.encodeArrayToBuffer(self.messageIds, buffer: buffer)
encoder.encodeBytes(buffer, forKey: "i")
}
}
func addSynchronizeConsumeMessageContentsOperation(modifier: Modifier, messageIds: [MessageId]) {
for (peerId, messageIds) in messagesIdsGroupedByPeerId(Set(messageIds)) {
var updateLocalIndex: Int32?
/*modifier.operationLogEnumerateEntries(peerId: peerId, tag: OperationLogTags.SynchronizeConsumeMessageContents, { entry in
updateLocalIndex = entry.tagLocalIndex
return false
})*/
let operationContents = SynchronizeConsumeMessageContentsOperation(messageIds: messageIds)
if let updateLocalIndex = updateLocalIndex {
let _ = modifier.operationLogRemoveEntry(peerId: peerId, tag: OperationLogTags.SynchronizeConsumeMessageContents, tagLocalIndex: updateLocalIndex)
}
modifier.operationLogAddEntry(peerId: peerId, tag: OperationLogTags.SynchronizeConsumeMessageContents, tagLocalIndex: .automatic, tagMergedIndex: .automatic, contents: operationContents)
}
}