Swiftgram/submodules/Postbox/Postbox/MessageView.swift
Peter 4459dc5b47 Add 'submodules/Postbox/' from commit '534443c710e63ff4ea595b5dc7be94550c467734'
git-subtree-dir: submodules/Postbox
git-subtree-mainline: 373769682ef152a8d5ef41ccb064a8387b2ca6f0
git-subtree-split: 534443c710e63ff4ea595b5dc7be94550c467734
2019-06-11 18:56:39 +01: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(_ operations: [MessageHistoryOperation], updatedMedia: [MediaId: Media?], renderIntermediateMessage: (IntermediateMessage) -> Message) -> 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 = 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
}
}