Reverse updateGlobalTags

This commit is contained in:
Ali 2019-12-05 16:13:45 +04:00
parent 5a72fb3934
commit e717887167

View File

@ -207,46 +207,6 @@ final class MessageHistoryTable: Table {
}
}
private func updateGlobalTags(_ message: IntermediateMessage, outputOperations: inout [MessageHistoryOperation], globalTagsOperations: inout [GlobalMessageHistoryTagsOperation], unsentMessageOperations: inout [IntermediateMessageHistoryUnsentOperation], updatedMessageTagSummaries: inout [MessageHistoryTagsSummaryKey: MessageHistoryTagNamespaceSummary], invalidateMessageTagSummaries: inout [InvalidatedMessageHistoryTagsSummaryEntryOperation], localTagsOperations: inout [IntermediateMessageHistoryLocalTagsOperation]) {
if message.flags.contains(.Unsent) && !message.flags.contains(.Failed) {
self.unsentTable.add(message.id, operations: &unsentMessageOperations)
}
let tags = message.tags.rawValue
if tags != 0 {
for i in 0 ..< 32 {
let currentTags = tags >> UInt32(i)
if currentTags == 0 {
break
}
if (currentTags & 1) != 0 {
let tag = MessageTags(rawValue: 1 << UInt32(i))
self.tagsTable.add(tags: tag, index: message.index, updatedSummaries: &updatedMessageTagSummaries, invalidateSummaries: &invalidateMessageTagSummaries)
}
}
}
let globalTags = message.globalTags.rawValue
if globalTags != 0 {
for i in 0 ..< 32 {
let currentTags = globalTags >> UInt32(i)
if currentTags == 0 {
break
}
if (currentTags & 1) != 0 {
let tag = GlobalMessageTags(rawValue: 1 << UInt32(i))
if self.globalTagsTable.addMessage(tag, index: message.index) {
globalTagsOperations.append(.insertMessage(tag, message))
}
}
}
}
if !message.localTags.isEmpty {
self.localTagsTable.set(id: message.id, tags: message.localTags, previousTags: [], operations: &localTagsOperations)
}
}
private func processIndexOperations(_ peerId: PeerId, operations: [MessageHistoryIndexOperation], processedOperationsByPeerId: inout [PeerId: [MessageHistoryOperation]], updatedMedia: inout [MediaId: Media?], unsentMessageOperations: inout [IntermediateMessageHistoryUnsentOperation], updatedPeerReadStateOperations: inout [PeerId: PeerReadStateSynchronizationOperation?], globalTagsOperations: inout [GlobalMessageHistoryTagsOperation], pendingActionsOperations: inout [PendingMessageActionsOperation], updatedMessageActionsSummaries: inout [PendingMessageActionsSummaryKey: Int32], updatedMessageTagSummaries: inout [MessageHistoryTagsSummaryKey: MessageHistoryTagNamespaceSummary], invalidateMessageTagSummaries: inout [InvalidatedMessageHistoryTagsSummaryEntryOperation], localTagsOperations: inout [IntermediateMessageHistoryLocalTagsOperation]) {
let sharedKey = self.key(MessageIndex(id: MessageId(peerId: PeerId(namespace: 0, id: 0), namespace: 0, id: 0), timestamp: 0))
let sharedBuffer = WriteBuffer()
@ -285,11 +245,46 @@ final class MessageHistoryTable: Table {
if !updatedGroupInfos.isEmpty {
outputOperations.append(.UpdateGroupInfos(updatedGroupInfos))
}
updateGlobalTags(message, outputOperations: &outputOperations, globalTagsOperations: &globalTagsOperations, unsentMessageOperations: &unsentMessageOperations, updatedMessageTagSummaries: &updatedMessageTagSummaries, invalidateMessageTagSummaries: &invalidateMessageTagSummaries, localTagsOperations: &localTagsOperations)
if message.flags.contains(.Unsent) && !message.flags.contains(.Failed) {
self.unsentTable.add(message.id, operations: &unsentMessageOperations)
}
let tags = message.tags.rawValue
if tags != 0 {
for i in 0 ..< 32 {
let currentTags = tags >> UInt32(i)
if currentTags == 0 {
break
}
if (currentTags & 1) != 0 {
let tag = MessageTags(rawValue: 1 << UInt32(i))
self.tagsTable.add(tags: tag, index: message.index, updatedSummaries: &updatedMessageTagSummaries, invalidateSummaries: &invalidateMessageTagSummaries)
}
}
}
let globalTags = message.globalTags.rawValue
if globalTags != 0 {
for i in 0 ..< 32 {
let currentTags = globalTags >> UInt32(i)
if currentTags == 0 {
break
}
if (currentTags & 1) != 0 {
let tag = GlobalMessageTags(rawValue: 1 << UInt32(i))
if self.globalTagsTable.addMessage(tag, index: message.index) {
globalTagsOperations.append(.insertMessage(tag, message))
}
}
}
}
if !message.localTags.isEmpty {
self.localTagsTable.set(id: message.id, tags: message.localTags, previousTags: [], operations: &localTagsOperations)
}
if !message.flags.intersection(.IsIncomingMask).isEmpty {
accumulatedAddedIncomingMessageIndices.insert(message.index)
}
case let .InsertExistingMessage(storeMessage):
commitAccumulatedAddedIndices()
processIndexOperationsCommitAccumulatedRemoveIndices(peerId: peerId, accumulatedRemoveIndices: &accumulatedRemoveIndices, updatedCombinedState: &updatedCombinedState, invalidateReadState: &invalidateReadState, unsentMessageOperations: &unsentMessageOperations, outputOperations: &outputOperations, globalTagsOperations: &globalTagsOperations, pendingActionsOperations: &pendingActionsOperations, updatedMessageActionsSummaries: &updatedMessageActionsSummaries, updatedMessageTagSummaries: &updatedMessageTagSummaries, invalidateMessageTagSummaries: &invalidateMessageTagSummaries, localTagsOperations: &localTagsOperations)
@ -301,8 +296,7 @@ final class MessageHistoryTable: Table {
if !updatedGroupInfos.isEmpty {
outputOperations.append(.UpdateGroupInfos(updatedGroupInfos))
}
updateGlobalTags(message, outputOperations: &outputOperations, globalTagsOperations: &globalTagsOperations, unsentMessageOperations: &unsentMessageOperations, updatedMessageTagSummaries: &updatedMessageTagSummaries, invalidateMessageTagSummaries: &invalidateMessageTagSummaries, localTagsOperations: &localTagsOperations)
}
}
case let .Remove(index):
commitAccumulatedAddedIndices()
accumulatedRemoveIndices.append(index)
@ -317,7 +311,7 @@ final class MessageHistoryTable: Table {
if !updatedGroupInfos.isEmpty {
outputOperations.append(.UpdateGroupInfos(updatedGroupInfos))
}
updateGlobalTags(message, outputOperations: &outputOperations, globalTagsOperations: &globalTagsOperations, unsentMessageOperations: &unsentMessageOperations, updatedMessageTagSummaries: &updatedMessageTagSummaries, invalidateMessageTagSummaries: &invalidateMessageTagSummaries, localTagsOperations: &localTagsOperations)
if !message.flags.intersection(.IsIncomingMask).isEmpty {
if index != message.index {
accumulatedRemoveIndices.append(index)