mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
93 lines
3.9 KiB
Swift
93 lines
3.9 KiB
Swift
import Foundation
|
|
|
|
private func convertNamespaces(value: ReadBuffer, buffer: WriteBuffer) {
|
|
var count: Int32 = 0
|
|
value.read(&count, offset: 0, length: 4)
|
|
buffer.write(&count, offset: 0, length: 4)
|
|
for _ in 0 ..< count {
|
|
var namespaceId: Int32 = 0
|
|
value.read(&namespaceId, offset: 0, length: 4)
|
|
buffer.write(&namespaceId, offset: 0, length: 4)
|
|
|
|
var kind: Int8 = 0
|
|
value.read(&kind, offset: 0, length: 1)
|
|
buffer.write(&kind, offset: 0, length: 1)
|
|
if kind == 0 {
|
|
var maxIncomingReadId: Int32 = 0
|
|
var maxOutgoingReadId: Int32 = 0
|
|
var maxKnownId: Int32 = 0
|
|
var count: Int32 = 0
|
|
|
|
value.read(&maxIncomingReadId, offset: 0, length: 4)
|
|
buffer.write(&maxIncomingReadId, offset: 0, length: 4)
|
|
value.read(&maxOutgoingReadId, offset: 0, length: 4)
|
|
buffer.write(&maxOutgoingReadId, offset: 0, length: 4)
|
|
value.read(&maxKnownId, offset: 0, length: 4)
|
|
buffer.write(&maxKnownId, offset: 0, length: 4)
|
|
value.read(&count, offset: 0, length: 4)
|
|
buffer.write(&count, offset: 0, length: 4)
|
|
|
|
var flags: Int32 = 0
|
|
buffer.write(&flags, offset: 0, length: 4)
|
|
} else {
|
|
var maxIncomingReadTimestamp: Int32 = 0
|
|
var maxIncomingReadIdPeerId: Int64 = 0
|
|
var maxIncomingReadIdNamespace: Int32 = 0
|
|
var maxIncomingReadIdId: Int32 = 0
|
|
|
|
var maxOutgoingReadTimestamp: Int32 = 0
|
|
var maxOutgoingReadIdPeerId: Int64 = 0
|
|
var maxOutgoingReadIdNamespace: Int32 = 0
|
|
var maxOutgoingReadIdId: Int32 = 0
|
|
|
|
var count: Int32 = 0
|
|
|
|
value.read(&maxIncomingReadTimestamp, offset: 0, length: 4)
|
|
buffer.write(&maxIncomingReadTimestamp, offset: 0, length: 4)
|
|
value.read(&maxIncomingReadIdPeerId, offset: 0, length: 8)
|
|
buffer.write(&maxIncomingReadIdPeerId, offset: 0, length: 8)
|
|
value.read(&maxIncomingReadIdNamespace, offset: 0, length: 4)
|
|
buffer.write(&maxIncomingReadIdNamespace, offset: 0, length: 4)
|
|
value.read(&maxIncomingReadIdId, offset: 0, length: 4)
|
|
buffer.write(&maxIncomingReadIdId, offset: 0, length: 4)
|
|
|
|
value.read(&maxOutgoingReadTimestamp, offset: 0, length: 4)
|
|
buffer.write(&maxOutgoingReadTimestamp, offset: 0, length: 4)
|
|
value.read(&maxOutgoingReadIdPeerId, offset: 0, length: 8)
|
|
buffer.write(&maxOutgoingReadIdPeerId, offset: 0, length: 8)
|
|
value.read(&maxOutgoingReadIdNamespace, offset: 0, length: 4)
|
|
buffer.write(&maxOutgoingReadIdNamespace, offset: 0, length: 4)
|
|
value.read(&maxOutgoingReadIdId, offset: 0, length: 4)
|
|
buffer.write(&maxOutgoingReadIdId, offset: 0, length: 4)
|
|
|
|
value.read(&count, offset: 0, length: 4)
|
|
buffer.write(&count, offset: 0, length: 4)
|
|
|
|
var flags: Int32 = 0
|
|
buffer.write(&flags, offset: 0, length: 4)
|
|
}
|
|
}
|
|
}
|
|
|
|
func postboxUpgrade_17to18(metadataTable: MetadataTable, valueBox: ValueBox, progress: (Float) -> Void) {
|
|
var converted: [Int64: Data] = [:]
|
|
|
|
let readStateTable = ValueBoxTable(id: 14, keyType: .int64, compactValuesOnCreation: false)
|
|
let buffer = WriteBuffer()
|
|
valueBox.scanInt64(readStateTable, values: { key, value in
|
|
buffer.reset()
|
|
convertNamespaces(value: value, buffer: buffer)
|
|
converted[key] = buffer.makeData()
|
|
return true
|
|
})
|
|
|
|
valueBox.removeAllFromTable(readStateTable)
|
|
let key = ValueBoxKey(length: 8)
|
|
for (int64key, data) in converted {
|
|
key.setInt64(0, value: int64key)
|
|
valueBox.set(readStateTable, key: key, value: MemoryBuffer(data: data))
|
|
}
|
|
|
|
metadataTable.setUserVersion(18)
|
|
}
|