mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
no message
This commit is contained in:
@@ -212,11 +212,11 @@ final class MessageHistoryTable: Table {
|
||||
var internalStoreMessages: [InternalStoreMessage] = []
|
||||
for message in messages {
|
||||
switch message.id {
|
||||
case let .Id(id):
|
||||
internalStoreMessages.append(InternalStoreMessage(id: id, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributes: message.attributes, media: message.media))
|
||||
case let .Partial(peerId, namespace):
|
||||
let id = self.historyMetadataTable.getNextMessageIdAndIncrement(peerId, namespace: namespace)
|
||||
internalStoreMessages.append(InternalStoreMessage(id: id, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributes: message.attributes, media: message.media))
|
||||
case let .Id(id):
|
||||
internalStoreMessages.append(InternalStoreMessage(id: id, timestamp: message.timestamp, globallyUniqueId: message.globallyUniqueId, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributes: message.attributes, media: message.media))
|
||||
case let .Partial(peerId, namespace):
|
||||
let id = self.historyMetadataTable.getNextMessageIdAndIncrement(peerId, namespace: namespace)
|
||||
internalStoreMessages.append(InternalStoreMessage(id: id, timestamp: message.timestamp, globallyUniqueId: message.globallyUniqueId, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributes: message.attributes, media: message.media))
|
||||
}
|
||||
}
|
||||
return internalStoreMessages
|
||||
@@ -457,6 +457,13 @@ final class MessageHistoryTable: Table {
|
||||
var stableVersion: UInt32 = 0
|
||||
sharedBuffer.write(&stableVersion, offset: 0, length: 4)
|
||||
|
||||
var hasGloballyUniqueId: Int8 = message.globallyUniqueId != nil ? 1 : 0
|
||||
sharedBuffer.write(&hasGloballyUniqueId, offset: 0, length: 1)
|
||||
if let globallyUniqueId = message.globallyUniqueId {
|
||||
var globallyUniqueIdValue = globallyUniqueId
|
||||
sharedBuffer.write(&globallyUniqueIdValue, offset: 0, length: 8)
|
||||
}
|
||||
|
||||
var flags = MessageFlags(message.flags)
|
||||
sharedBuffer.write(&flags.rawValue, offset: 0, length: 4)
|
||||
|
||||
@@ -569,7 +576,7 @@ final class MessageHistoryTable: Table {
|
||||
|
||||
self.valueBox.set(self.table, key: self.key(MessageIndex(message), key: sharedKey), value: sharedBuffer)
|
||||
|
||||
return IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: message.id, timestamp: message.timestamp, flags: flags, tags: message.tags, forwardInfo: intermediateForwardInfo, authorId: message.authorId, text: message.text, attributesData: attributesBuffer.makeReadBufferAndReset(), embeddedMediaData: embeddedMediaBuffer.makeReadBufferAndReset(), referencedMedia: referencedMedia)
|
||||
return IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: message.id, globallyUniqueId: message.globallyUniqueId, timestamp: message.timestamp, flags: flags, tags: message.tags, forwardInfo: intermediateForwardInfo, authorId: message.authorId, text: message.text, attributesData: attributesBuffer.makeReadBufferAndReset(), embeddedMediaData: embeddedMediaBuffer.makeReadBufferAndReset(), referencedMedia: referencedMedia)
|
||||
}
|
||||
|
||||
private func justInsertHole(_ hole: MessageHistoryHole, sharedBuffer: WriteBuffer = WriteBuffer()) {
|
||||
@@ -668,7 +675,7 @@ final class MessageHistoryTable: Table {
|
||||
return nil
|
||||
}
|
||||
|
||||
func updateEmbeddedMedia(_ index: MessageIndex, operationsByPeerId: inout [PeerId: [MessageHistoryOperation]], update: @noescape([Media]) -> [Media]) {
|
||||
func updateEmbeddedMedia(_ index: MessageIndex, operationsByPeerId: inout [PeerId: [MessageHistoryOperation]], update: ([Media]) -> [Media]) {
|
||||
if let message = self.getMessage(index) {
|
||||
var embeddedMediaCount: Int32 = 0
|
||||
message.embeddedMediaData.read(&embeddedMediaCount, offset: 0, length: 4)
|
||||
@@ -713,7 +720,7 @@ final class MessageHistoryTable: Table {
|
||||
updatedEmbeddedMediaBuffer.write(encodedBuffer.memory, offset: 0, length: encodedBuffer.length)
|
||||
}
|
||||
|
||||
self.storeIntermediateMessage(IntermediateMessage(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributesData: message.attributesData, embeddedMediaData: updatedEmbeddedMediaBuffer.readBufferNoCopy(), referencedMedia: message.referencedMedia), sharedKey: self.key(index))
|
||||
self.storeIntermediateMessage(IntermediateMessage(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, globallyUniqueId: message.globallyUniqueId, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributesData: message.attributesData, embeddedMediaData: updatedEmbeddedMediaBuffer.readBufferNoCopy(), referencedMedia: message.referencedMedia), sharedKey: self.key(index))
|
||||
|
||||
let operation: MessageHistoryOperation = .UpdateEmbeddedMedia(index, updatedEmbeddedMediaBuffer.makeReadBufferAndReset())
|
||||
if operationsByPeerId[index.id.peerId] == nil {
|
||||
@@ -780,7 +787,7 @@ final class MessageHistoryTable: Table {
|
||||
self.messageMediaTable.removeEmbeddedMedia(media)
|
||||
}
|
||||
for mediaId in previousMessage.referencedMedia {
|
||||
self.messageMediaTable.removeReference(mediaId)
|
||||
let _ = self.messageMediaTable.removeReference(mediaId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -817,6 +824,14 @@ final class MessageHistoryTable: Table {
|
||||
var stableVersion: UInt32 = previousMessage.stableVersion + 1
|
||||
sharedBuffer.write(&stableVersion, offset: 0, length: 4)
|
||||
|
||||
let globallyUniqueId: Int64? = previousMessage.globallyUniqueId
|
||||
var hasGloballyUniqueId: Int8 = globallyUniqueId != nil ? 1 : 0
|
||||
sharedBuffer.write(&hasGloballyUniqueId, offset: 0, length: 1)
|
||||
if let globallyUniqueId = globallyUniqueId {
|
||||
var globallyUniqueIdValue = globallyUniqueId
|
||||
sharedBuffer.write(&globallyUniqueIdValue, offset: 0, length: 8)
|
||||
}
|
||||
|
||||
var flags = MessageFlags(message.flags)
|
||||
sharedBuffer.write(&flags.rawValue, offset: 0, length: 4)
|
||||
|
||||
@@ -929,7 +944,7 @@ final class MessageHistoryTable: Table {
|
||||
|
||||
self.valueBox.set(self.table, key: self.key(MessageIndex(message), key: sharedKey), value: sharedBuffer)
|
||||
|
||||
return IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: message.id, timestamp: message.timestamp, flags: flags, tags: tags, forwardInfo: intermediateForwardInfo, authorId: message.authorId, text: message.text, attributesData: attributesBuffer.makeReadBufferAndReset(), embeddedMediaData: embeddedMediaBuffer.makeReadBufferAndReset(), referencedMedia: referencedMedia)
|
||||
return IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: message.id, globallyUniqueId: message.globallyUniqueId, timestamp: message.timestamp, flags: flags, tags: tags, forwardInfo: intermediateForwardInfo, authorId: message.authorId, text: message.text, attributesData: attributesBuffer.makeReadBufferAndReset(), embeddedMediaData: embeddedMediaBuffer.makeReadBufferAndReset(), referencedMedia: referencedMedia)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
@@ -938,7 +953,7 @@ final class MessageHistoryTable: Table {
|
||||
private func justUpdateTimestamp(_ index: MessageIndex, timestamp: Int32) {
|
||||
if let previousMessage = self.getMessage(index) {
|
||||
self.valueBox.remove(self.table, key: self.key(index))
|
||||
var updatedMessage = IntermediateMessage(stableId: previousMessage.stableId, stableVersion: previousMessage.stableVersion + 1, id: previousMessage.id, timestamp: timestamp, flags: previousMessage.flags, tags: previousMessage.tags, forwardInfo: previousMessage.forwardInfo, authorId: previousMessage.authorId, text: previousMessage.text, attributesData: previousMessage.attributesData, embeddedMediaData: previousMessage.embeddedMediaData, referencedMedia: previousMessage.referencedMedia)
|
||||
let updatedMessage = IntermediateMessage(stableId: previousMessage.stableId, stableVersion: previousMessage.stableVersion + 1, id: previousMessage.id, globallyUniqueId: previousMessage.globallyUniqueId, timestamp: timestamp, flags: previousMessage.flags, tags: previousMessage.tags, forwardInfo: previousMessage.forwardInfo, authorId: previousMessage.authorId, text: previousMessage.text, attributesData: previousMessage.attributesData, embeddedMediaData: previousMessage.embeddedMediaData, referencedMedia: previousMessage.referencedMedia)
|
||||
self.storeIntermediateMessage(updatedMessage, sharedKey: self.key(index))
|
||||
|
||||
let tags = previousMessage.tags.rawValue
|
||||
@@ -991,7 +1006,7 @@ final class MessageHistoryTable: Table {
|
||||
if let extractedMedia = extractedMedia {
|
||||
var updatedReferencedMedia = message.referencedMedia
|
||||
updatedReferencedMedia.append(extractedMedia.id!)
|
||||
self.storeIntermediateMessage(IntermediateMessage(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributesData: message.attributesData, embeddedMediaData: updatedEmbeddedMediaBuffer.readBufferNoCopy(), referencedMedia: updatedReferencedMedia), sharedKey: self.key(index))
|
||||
self.storeIntermediateMessage(IntermediateMessage(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, globallyUniqueId: message.globallyUniqueId, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: message.forwardInfo, authorId: message.authorId, text: message.text, attributesData: message.attributesData, embeddedMediaData: updatedEmbeddedMediaBuffer.readBufferNoCopy(), referencedMedia: updatedReferencedMedia), sharedKey: self.key(index))
|
||||
|
||||
return extractedMedia
|
||||
}
|
||||
@@ -1011,6 +1026,13 @@ final class MessageHistoryTable: Table {
|
||||
var stableVersion: UInt32 = message.stableVersion
|
||||
sharedBuffer.write(&stableVersion, offset: 0, length: 4)
|
||||
|
||||
var hasGloballyUniqueId: Int8 = message.globallyUniqueId != nil ? 1 : 0
|
||||
sharedBuffer.write(&hasGloballyUniqueId, offset: 0, length: 1)
|
||||
if let globallyUniqueId = message.globallyUniqueId {
|
||||
var globallyUniqueIdValue = globallyUniqueId
|
||||
sharedBuffer.write(&globallyUniqueIdValue, offset: 0, length: 8)
|
||||
}
|
||||
|
||||
var flagsValue: UInt32 = message.flags.rawValue
|
||||
sharedBuffer.write(&flagsValue, offset: 0, length: 4)
|
||||
|
||||
@@ -1091,6 +1113,15 @@ final class MessageHistoryTable: Table {
|
||||
var stableVersion: UInt32 = 0
|
||||
value.read(&stableVersion, offset: 0, length: 4)
|
||||
|
||||
var hasGloballyUniqueId: Int8 = 0
|
||||
var globallyUniqueId: Int64?
|
||||
value.read(&hasGloballyUniqueId, offset: 0, length: 1)
|
||||
if hasGloballyUniqueId != 0 {
|
||||
var globallyUniqueIdValue: Int64 = 0
|
||||
value.read(&globallyUniqueIdValue, offset: 0, length: 8)
|
||||
globallyUniqueId = globallyUniqueIdValue
|
||||
}
|
||||
|
||||
var flagsValue: UInt32 = 0
|
||||
value.read(&flagsValue, offset: 0, length: 4)
|
||||
let flags = MessageFlags(rawValue: flagsValue)
|
||||
@@ -1182,7 +1213,7 @@ final class MessageHistoryTable: Table {
|
||||
referencedMediaIds.append(MediaId(namespace: idNamespace, id: idId))
|
||||
}
|
||||
|
||||
return .Message(IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: index.id, timestamp: index.timestamp, flags: flags, tags: tags, forwardInfo: forwardInfo, authorId: authorId, text: text, attributesData: attributesData, embeddedMediaData: embeddedMediaData, referencedMedia: referencedMediaIds))
|
||||
return .Message(IntermediateMessage(stableId: stableId, stableVersion: stableVersion, id: index.id, globallyUniqueId: globallyUniqueId, timestamp: index.timestamp, flags: flags, tags: tags, forwardInfo: forwardInfo, authorId: authorId, text: text, attributesData: attributesData, embeddedMediaData: embeddedMediaData, referencedMedia: referencedMediaIds))
|
||||
} else {
|
||||
var stableId: UInt32 = 0
|
||||
value.read(&stableId, offset: 0, length: 4)
|
||||
@@ -1284,7 +1315,7 @@ final class MessageHistoryTable: Table {
|
||||
}
|
||||
}
|
||||
|
||||
return Message(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: forwardInfo, author: author, text: message.text, attributes: parsedAttributes, media: parsedMedia, peers: peers, associatedMessages: associatedMessages, associatedMessageIds: associatedMessageIds)
|
||||
return Message(stableId: message.stableId, stableVersion: message.stableVersion, id: message.id, globallyUniqueId: message.globallyUniqueId, timestamp: message.timestamp, flags: message.flags, tags: message.tags, forwardInfo: forwardInfo, author: author, text: message.text, attributes: parsedAttributes, media: parsedMedia, peers: peers, associatedMessages: associatedMessages, associatedMessageIds: associatedMessageIds)
|
||||
}
|
||||
|
||||
func entriesAround(_ index: MessageIndex, count: Int, operationsByPeerId: inout [PeerId: [MessageHistoryOperation]], unsentMessageOperations: inout [IntermediateMessageHistoryUnsentOperation], updatedPeerReadStateOperations: inout [PeerId: PeerReadStateSynchronizationOperation?]) -> (entries: [IntermediateMessageHistoryEntry], lower: IntermediateMessageHistoryEntry?, upper: IntermediateMessageHistoryEntry?) {
|
||||
@@ -1495,7 +1526,7 @@ final class MessageHistoryTable: Table {
|
||||
var result: MessageId?
|
||||
self.valueBox.range(self.table, start: self.key(MessageIndex(id: MessageId(peerId: peerId, namespace: 0, id: 0), timestamp: timestamp)), end: self.key(MessageIndex(id: MessageId(peerId: peerId, namespace: Int32.max, id: Int32.max), timestamp: timestamp)), values: { key, value in
|
||||
let entry = self.readIntermediateEntry(key, value: value)
|
||||
if case let .Message(message) = entry {
|
||||
if case .Message = entry {
|
||||
result = entry.index.id
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user