@@ -197,19 +197,19 @@ final class MessageHistoryTable: Table {
197197
198198 let buckets = self . continuousIndexIntervalsForRemoving ( accumulatedRemoveIndices)
199199 for bucket in buckets {
200- var indicesWithMetadata : [ ( MessageIndex , MessageTags ) ] = [ ]
200+ var indicesWithMetadata : [ ( MessageIndex , MessageTags , Int64 ? ) ] = [ ]
201201 var globalIndicesWithMetadata : [ ( GlobalMessageTags , MessageIndex ) ] = [ ]
202202
203203 for index in bucket {
204204 let tagsAndGlobalTags = self . justRemove ( index, unsentMessageOperations: & unsentMessageOperations, pendingActionsOperations: & pendingActionsOperations, updatedMessageActionsSummaries: & updatedMessageActionsSummaries, updatedMessageTagSummaries: & updatedMessageTagSummaries, invalidateMessageTagSummaries: & invalidateMessageTagSummaries, localTagsOperations: & localTagsOperations, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations)
205- if let ( tags, globalTags) = tagsAndGlobalTags {
206- indicesWithMetadata. append ( ( index, tags) )
205+ if let ( tags, globalTags, threadId ) = tagsAndGlobalTags {
206+ indicesWithMetadata. append ( ( index, tags, threadId ) )
207207
208208 if !globalTags. isEmpty {
209209 globalIndicesWithMetadata. append ( ( globalTags, index) )
210210 }
211211 } else {
212- indicesWithMetadata. append ( ( index, MessageTags ( ) ) )
212+ indicesWithMetadata. append ( ( index, MessageTags ( ) , nil ) )
213213 }
214214 }
215215 assert ( bucket. count == indicesWithMetadata. count)
@@ -352,8 +352,8 @@ final class MessageHistoryTable: Table {
352352 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, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations)
353353
354354 var updatedGroupInfos : [ MessageId : MessageGroupInfo ] = [ : ]
355- if let ( message, previousTags) = self . justUpdate ( storeMessage. index, message: storeMessage, keepLocalTags: true , sharedKey: sharedKey, sharedBuffer: sharedBuffer, sharedEncoder: sharedEncoder, unsentMessageOperations: & unsentMessageOperations, updatedMessageTagSummaries: & updatedMessageTagSummaries, invalidateMessageTagSummaries: & invalidateMessageTagSummaries, updatedGroupInfos: & updatedGroupInfos, localTagsOperations: & localTagsOperations, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations, updatedMedia: & updatedMedia) {
356- outputOperations. append ( . Remove( [ ( storeMessage. index, previousTags) ] ) )
355+ if let ( message, previousTags, previousThreadId ) = self . justUpdate ( storeMessage. index, message: storeMessage, keepLocalTags: true , sharedKey: sharedKey, sharedBuffer: sharedBuffer, sharedEncoder: sharedEncoder, unsentMessageOperations: & unsentMessageOperations, updatedMessageTagSummaries: & updatedMessageTagSummaries, invalidateMessageTagSummaries: & invalidateMessageTagSummaries, updatedGroupInfos: & updatedGroupInfos, localTagsOperations: & localTagsOperations, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations, updatedMedia: & updatedMedia) {
356+ outputOperations. append ( . Remove( [ ( storeMessage. index, previousTags, previousThreadId ) ] ) )
357357 outputOperations. append ( . InsertMessage( message) )
358358 if !updatedGroupInfos. isEmpty {
359359 outputOperations. append ( . UpdateGroupInfos( updatedGroupInfos) )
@@ -367,8 +367,8 @@ final class MessageHistoryTable: Table {
367367 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, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations)
368368
369369 var updatedGroupInfos : [ MessageId : MessageGroupInfo ] = [ : ]
370- if let ( message, previousTags) = self . justUpdate ( index, message: storeMessage, keepLocalTags: false , sharedKey: sharedKey, sharedBuffer: sharedBuffer, sharedEncoder: sharedEncoder, unsentMessageOperations: & unsentMessageOperations, updatedMessageTagSummaries: & updatedMessageTagSummaries, invalidateMessageTagSummaries: & invalidateMessageTagSummaries, updatedGroupInfos: & updatedGroupInfos, localTagsOperations: & localTagsOperations, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations, updatedMedia: & updatedMedia) {
371- outputOperations. append ( . Remove( [ ( index, previousTags) ] ) )
370+ if let ( message, previousTags, previousThreadId ) = self . justUpdate ( index, message: storeMessage, keepLocalTags: false , sharedKey: sharedKey, sharedBuffer: sharedBuffer, sharedEncoder: sharedEncoder, unsentMessageOperations: & unsentMessageOperations, updatedMessageTagSummaries: & updatedMessageTagSummaries, invalidateMessageTagSummaries: & invalidateMessageTagSummaries, updatedGroupInfos: & updatedGroupInfos, localTagsOperations: & localTagsOperations, timestampBasedMessageAttributesOperations: & timestampBasedMessageAttributesOperations, updatedMedia: & updatedMedia) {
371+ outputOperations. append ( . Remove( [ ( index, previousTags, previousThreadId ) ] ) )
372372 outputOperations. append ( . InsertMessage( message) )
373373 if !updatedGroupInfos. isEmpty {
374374 outputOperations. append ( . UpdateGroupInfos( updatedGroupInfos) )
@@ -944,7 +944,7 @@ final class MessageHistoryTable: Table {
944944 self . storeIntermediateMessage ( updatedMessage, sharedKey: self . key ( MessageIndex . absoluteLowerBound ( ) ) )
945945
946946 let operations : [ MessageHistoryOperation ] = [
947- . Remove( [ ( index, message. tags) ] ) ,
947+ . Remove( [ ( index, message. tags, message . threadId ) ] ) ,
948948 . InsertMessage( updatedMessage)
949949 ]
950950 if operationsByPeerId [ message. id. peerId] == nil {
@@ -1352,7 +1352,7 @@ final class MessageHistoryTable: Table {
13521352 return result
13531353 }
13541354
1355- private func justRemove( _ index: MessageIndex , unsentMessageOperations: inout [ IntermediateMessageHistoryUnsentOperation ] , pendingActionsOperations: inout [ PendingMessageActionsOperation ] , updatedMessageActionsSummaries: inout [ PendingMessageActionsSummaryKey : Int32 ] , updatedMessageTagSummaries: inout [ MessageHistoryTagsSummaryKey : MessageHistoryTagNamespaceSummary ] , invalidateMessageTagSummaries: inout [ InvalidatedMessageHistoryTagsSummaryEntryOperation ] , localTagsOperations: inout [ IntermediateMessageHistoryLocalTagsOperation ] , timestampBasedMessageAttributesOperations: inout [ TimestampBasedMessageAttributesOperation ] ) -> ( MessageTags , GlobalMessageTags ) ? {
1355+ private func justRemove( _ index: MessageIndex , unsentMessageOperations: inout [ IntermediateMessageHistoryUnsentOperation ] , pendingActionsOperations: inout [ PendingMessageActionsOperation ] , updatedMessageActionsSummaries: inout [ PendingMessageActionsSummaryKey : Int32 ] , updatedMessageTagSummaries: inout [ MessageHistoryTagsSummaryKey : MessageHistoryTagNamespaceSummary ] , invalidateMessageTagSummaries: inout [ InvalidatedMessageHistoryTagsSummaryEntryOperation ] , localTagsOperations: inout [ IntermediateMessageHistoryLocalTagsOperation ] , timestampBasedMessageAttributesOperations: inout [ TimestampBasedMessageAttributesOperation ] ) -> ( MessageTags , GlobalMessageTags , Int64 ? ) ? {
13561356 let key = self . key ( index)
13571357 if let value = self . valueBox. get ( self . table, key: key) {
13581358 let resultTags : MessageTags
@@ -1440,7 +1440,7 @@ final class MessageHistoryTable: Table {
14401440 resultGlobalTags = message. globalTags
14411441
14421442 self . valueBox. remove ( self . table, key: key, secure: true )
1443- return ( resultTags, resultGlobalTags)
1443+ return ( resultTags, resultGlobalTags, message . threadId )
14441444 } else {
14451445 return nil
14461446 }
@@ -1544,7 +1544,7 @@ final class MessageHistoryTable: Table {
15441544 } )
15451545 }
15461546
1547- private func justUpdate( _ index: MessageIndex , message: InternalStoreMessage , keepLocalTags: Bool , sharedKey: ValueBoxKey , sharedBuffer: WriteBuffer , sharedEncoder: PostboxEncoder , unsentMessageOperations: inout [ IntermediateMessageHistoryUnsentOperation ] , updatedMessageTagSummaries: inout [ MessageHistoryTagsSummaryKey : MessageHistoryTagNamespaceSummary ] , invalidateMessageTagSummaries: inout [ InvalidatedMessageHistoryTagsSummaryEntryOperation ] , updatedGroupInfos: inout [ MessageId : MessageGroupInfo ] , localTagsOperations: inout [ IntermediateMessageHistoryLocalTagsOperation ] , timestampBasedMessageAttributesOperations: inout [ TimestampBasedMessageAttributesOperation ] , updatedMedia: inout [ MediaId : Media ? ] ) -> ( IntermediateMessage , MessageTags ) ? {
1547+ private func justUpdate( _ index: MessageIndex , message: InternalStoreMessage , keepLocalTags: Bool , sharedKey: ValueBoxKey , sharedBuffer: WriteBuffer , sharedEncoder: PostboxEncoder , unsentMessageOperations: inout [ IntermediateMessageHistoryUnsentOperation ] , updatedMessageTagSummaries: inout [ MessageHistoryTagsSummaryKey : MessageHistoryTagNamespaceSummary ] , invalidateMessageTagSummaries: inout [ InvalidatedMessageHistoryTagsSummaryEntryOperation ] , updatedGroupInfos: inout [ MessageId : MessageGroupInfo ] , localTagsOperations: inout [ IntermediateMessageHistoryLocalTagsOperation ] , timestampBasedMessageAttributesOperations: inout [ TimestampBasedMessageAttributesOperation ] , updatedMedia: inout [ MediaId : Media ? ] ) -> ( IntermediateMessage , MessageTags , Int64 ? ) ? {
15481548 if let previousMessage = self . getMessage ( index) {
15491549 var mediaToUpdate : [ Media ] = [ ]
15501550
@@ -2037,7 +2037,7 @@ final class MessageHistoryTable: Table {
20372037
20382038 self . valueBox. set ( self . table, key: self . key ( message. index, key: sharedKey) , value: sharedBuffer)
20392039
2040- let result = ( IntermediateMessage ( stableId: stableId, stableVersion: stableVersion, id: message. id, globallyUniqueId: message. globallyUniqueId, groupingKey: message. groupingKey, groupInfo: groupInfo, threadId: message. threadId, timestamp: message. timestamp, flags: flags, tags: tags, globalTags: message. globalTags, localTags: updatedLocalTags, customTags: message. customTags, forwardInfo: intermediateForwardInfo, authorId: message. authorId, text: message. text, attributesData: attributesBuffer. makeReadBufferAndReset ( ) , embeddedMediaData: embeddedMediaBuffer. makeReadBufferAndReset ( ) , referencedMedia: referencedMedia) , previousMessage. tags)
2040+ let result = ( IntermediateMessage ( stableId: stableId, stableVersion: stableVersion, id: message. id, globallyUniqueId: message. globallyUniqueId, groupingKey: message. groupingKey, groupInfo: groupInfo, threadId: message. threadId, timestamp: message. timestamp, flags: flags, tags: tags, globalTags: message. globalTags, localTags: updatedLocalTags, customTags: message. customTags, forwardInfo: intermediateForwardInfo, authorId: message. authorId, text: message. text, attributesData: attributesBuffer. makeReadBufferAndReset ( ) , embeddedMediaData: embeddedMediaBuffer. makeReadBufferAndReset ( ) , referencedMedia: referencedMedia) , previousMessage. tags, previousMessage . threadId )
20412041
20422042 for media in mediaToUpdate {
20432043 if let id = media. id {
0 commit comments