mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-18 03:20:09 +00:00
no message
This commit is contained in:
parent
05452bdac0
commit
6f5513f01a
@ -732,11 +732,14 @@ final class MutableChatListView {
|
||||
}
|
||||
|
||||
public final class ChatListView {
|
||||
public let groupId: PeerGroupId?
|
||||
public let entries: [ChatListEntry]
|
||||
public let earlierIndex: ChatListIndex?
|
||||
public let laterIndex: ChatListIndex?
|
||||
|
||||
init(_ mutableView: MutableChatListView) {
|
||||
self.groupId = mutableView.groupId
|
||||
|
||||
var entries: [ChatListEntry] = []
|
||||
for entry in mutableView.entries {
|
||||
switch entry {
|
||||
|
@ -176,6 +176,32 @@ final class GroupFeedIndexTable: Table {
|
||||
}
|
||||
}
|
||||
|
||||
func addHoleFromLatestEntries(groupId: PeerGroupId, messageHistoryTable: MessageHistoryTable, operations: inout [PeerGroupId: [GroupFeedIndexOperation]]) {
|
||||
self.ensureInitialized(groupId)
|
||||
let entries = self.entriesInRange(groupId: groupId, fromIndex: MessageIndex.absoluteUpperBound(), toIndex: MessageIndex.absoluteLowerBound(), count: 1, messageHistoryTable: messageHistoryTable)
|
||||
if let entry = entries.first {
|
||||
switch entry {
|
||||
case .Message:
|
||||
self.addHole(groupId: groupId, stableId: self.metadataTable.getNextStableMessageIndexId(), hole: GroupFeedIndexHole(lowerIndex: entry.index.successor(), upperIndex: MessageIndex.absoluteUpperBound().predecessor()), addOperation: { groupId, operation in
|
||||
addOperation(groupId: groupId, operation: operation, to: &operations)
|
||||
})
|
||||
case let .Hole(hole, lowerIndex):
|
||||
if hole.maxIndex.timestamp != Int32.max {
|
||||
if let lowerIndex = lowerIndex {
|
||||
self.removeHole(groupId: groupId, messageIndex: entry.index, addOperation: { groupId, operation in
|
||||
addOperation(groupId: groupId, operation: operation, to: &operations)
|
||||
})
|
||||
self.addHole(groupId: groupId, stableId: self.metadataTable.getNextStableMessageIndexId(), hole: GroupFeedIndexHole(lowerIndex: lowerIndex, upperIndex: MessageIndex.absoluteUpperBound().predecessor()), addOperation: { groupId, operation in
|
||||
addOperation(groupId: groupId, operation: operation, to: &operations)
|
||||
})
|
||||
} else {
|
||||
assertionFailure()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func addHole(groupId: PeerGroupId, stableId: UInt32, hole: GroupFeedIndexHole, addOperation: (PeerGroupId, GroupFeedIndexOperation) -> Void) {
|
||||
self.ensureInitialized(groupId)
|
||||
|
||||
|
@ -508,6 +508,10 @@ public final class Message {
|
||||
self.associatedMessageIds = associatedMessageIds
|
||||
}
|
||||
|
||||
public func withUpdatedFlags(_ flags: MessageFlags) -> Message {
|
||||
return Message(stableId: self.stableId, stableVersion: self.stableVersion, id: self.id, globallyUniqueId: self.globallyUniqueId, groupingKey: self.groupingKey, groupInfo: self.groupInfo, timestamp: self.timestamp, flags: flags, tags: self.tags, globalTags: self.globalTags, localTags: self.localTags, forwardInfo: self.forwardInfo, author: self.author, text: self.text, attributes: self.attributes, media: self.media, peers: self.peers, associatedMessages: self.associatedMessages, associatedMessageIds: self.associatedMessageIds)
|
||||
}
|
||||
|
||||
func withUpdatedGroupInfo(_ groupInfo: MessageGroupInfo?) -> Message {
|
||||
return Message(stableId: self.stableId, stableVersion: self.stableVersion, id: self.id, globallyUniqueId: self.globallyUniqueId, groupingKey: self.groupingKey, groupInfo: groupInfo, timestamp: self.timestamp, flags: self.flags, tags: self.tags, globalTags: self.globalTags, localTags: self.localTags, forwardInfo: self.forwardInfo, author: self.author, text: self.text, attributes: self.attributes, media: self.media, peers: self.peers, associatedMessages: self.associatedMessages, associatedMessageIds: self.associatedMessageIds)
|
||||
}
|
||||
|
@ -57,6 +57,11 @@ public final class Modifier {
|
||||
self.postbox?.fillMultipleGroupFeedHoles(groupId: groupId, mainHoleMaxIndex: mainHoleMaxIndex, fillType: fillType, messages: messages)
|
||||
}
|
||||
|
||||
public func addFeedHoleFromLatestEntries(groupId: PeerGroupId) {
|
||||
assert(!self.disposed)
|
||||
self.postbox?.addFeedHoleFromLatestEntries(groupId: groupId)
|
||||
}
|
||||
|
||||
public func replaceChatListHole(groupId: PeerGroupId?, index: MessageIndex, hole: ChatListHole?) {
|
||||
assert(!self.disposed)
|
||||
self.postbox?.replaceChatListHole(groupId: groupId, index: index, hole: hole)
|
||||
@ -830,7 +835,7 @@ public func openPostbox(basePath: String, globalMessageIdsNamespace: MessageId.N
|
||||
|
||||
#if DEBUG
|
||||
//debugSaveState(basePath: basePath, name: "previous")
|
||||
//debugRestoreState(basePath: basePath, name: "previous")
|
||||
debugRestoreState(basePath: basePath, name: "previous")
|
||||
#endif
|
||||
|
||||
loop: while true {
|
||||
@ -1379,6 +1384,10 @@ public final class Postbox {
|
||||
self.currentRemovedHolesByPeerGroupId[groupId]![mainHoleMaxIndex] = fillType.direction
|
||||
}
|
||||
|
||||
fileprivate func addFeedHoleFromLatestEntries(groupId: PeerGroupId) {
|
||||
self.groupFeedIndexTable.addHoleFromLatestEntries(groupId: groupId, messageHistoryTable: self.messageHistoryTable, operations: &self.currentGroupFeedOperations)
|
||||
}
|
||||
|
||||
fileprivate func replaceChatListHole(groupId: PeerGroupId?, index: MessageIndex, hole: ChatListHole?) {
|
||||
self.chatListTable.replaceHole(groupId: groupId, index: index, hole: hole, operations: &self.currentChatListOperations)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user