Swiftgram/submodules/Postbox/Sources/MessageView.swift
2021-02-09 22:55:41 +04:00

56 lines
1.8 KiB
Swift

import Foundation
final class MutableMessageView {
let messageId: MessageId
var stableId: UInt32?
var message: Message?
init(messageId: MessageId, message: Message?) {
self.messageId = messageId
self.message = message
self.stableId = message?.stableId
}
func replay(postbox: Postbox, operations: [MessageHistoryOperation], updatedMedia: [MediaId: Media?]) -> Bool {
var updated = false
for operation in operations {
switch operation {
case let .Remove(indices):
if let message = self.message {
let messageIndex = message.index
for (index, _) in indices {
if index == messageIndex {
self.message = nil
updated = true
break
}
}
}
case let .InsertMessage(message):
if message.id == self.messageId || message.stableId == self.stableId {
self.message = postbox.renderIntermediateMessage(message)
self.stableId = message.stableId
updated = true
}
case .UpdateEmbeddedMedia:
break
case .UpdateTimestamp:
break
default:
break
}
}
return updated
}
}
public final class MessageView {
public let messageId: MessageId
public let message: Message?
init(_ view: MutableMessageView) {
self.messageId = view.messageId
self.message = view.message
}
}