Swiftgram/TelegramUI/ChatHistoryEntriesForView.swift
2017-03-23 21:27:34 +03:00

54 lines
1.7 KiB
Swift

import Foundation
import Postbox
import TelegramCore
func chatHistoryEntriesForView(_ view: MessageHistoryView, includeUnreadEntry: Bool, includeChatInfoEntry: Bool) -> [ChatHistoryEntry] {
var entries: [ChatHistoryEntry] = []
for entry in view.entries {
switch entry {
case let .HoleEntry(hole, _):
entries.append(.HoleEntry(hole))
case let .MessageEntry(message, read, _):
entries.append(.MessageEntry(message, read))
}
}
if let maxReadIndex = view.maxReadIndex, includeUnreadEntry {
var inserted = false
var i = 0
let unreadEntry: ChatHistoryEntry = .UnreadEntry(maxReadIndex)
for entry in entries {
if entry > unreadEntry {
entries.insert(unreadEntry, at: i)
inserted = true
break
}
i += 1
}
if !inserted {
//entries.append(.UnreadEntry(maxReadIndex))
}
}
if includeChatInfoEntry {
if view.earlierId == nil {
var cachedPeerData: CachedPeerData?
for entry in view.additionalData {
if case let .cachedPeerData(_, data) = entry {
cachedPeerData = data
break
}
}
if let cachedPeerData = cachedPeerData as? CachedUserData, let botInfo = cachedPeerData.botInfo, !botInfo.description.isEmpty {
entries.insert(.ChatInfoEntry(botInfo.description), at: 0)
} else if view.entries.isEmpty {
entries.insert(.EmptyChatInfoEntry, at: 0)
}
}
}
return entries
}