mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Refactoring
This commit is contained in:
65
submodules/Postbox/Sources/MessageGroupView.swift
Normal file
65
submodules/Postbox/Sources/MessageGroupView.swift
Normal file
@@ -0,0 +1,65 @@
|
||||
import Foundation
|
||||
|
||||
final class MutableMessageGroupView: MutablePostboxView {
|
||||
fileprivate let id: MessageId
|
||||
fileprivate let groupingKey: Int64?
|
||||
fileprivate var messages: [Message] = []
|
||||
|
||||
init(postbox: PostboxImpl, id: MessageId) {
|
||||
self.id = id
|
||||
self.messages = postbox.getMessageGroup(at: id) ?? []
|
||||
self.groupingKey = self.messages.first?.groupingKey
|
||||
}
|
||||
|
||||
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
|
||||
var updated = false
|
||||
if let operations = transaction.currentOperationsByPeerId[self.id.peerId] {
|
||||
outer: for operation in operations {
|
||||
switch operation {
|
||||
case let .InsertMessage(message):
|
||||
if let groupingKey = self.groupingKey, message.groupingKey == groupingKey {
|
||||
updated = true
|
||||
break outer
|
||||
} else if message.id == self.id {
|
||||
updated = true
|
||||
break outer
|
||||
}
|
||||
case let .Remove(indices):
|
||||
for index in indices {
|
||||
for message in self.messages {
|
||||
if index.0.id == message.id {
|
||||
updated = true
|
||||
break outer
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if updated {
|
||||
self.messages = postbox.getMessageGroup(at: self.id) ?? []
|
||||
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func immutableView() -> PostboxView {
|
||||
return MessageGroupView(self)
|
||||
}
|
||||
}
|
||||
|
||||
public final class MessageGroupView: PostboxView {
|
||||
public let messages: [Message]
|
||||
|
||||
init(_ view: MutableMessageGroupView) {
|
||||
self.messages = view.messages
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user