mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-07 13:35:09 +00:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
@@ -8,14 +8,14 @@ public enum AutodownloadPreset {
|
||||
|
||||
public struct AutodownloadPresetSettings: Codable {
|
||||
public let disabled: Bool
|
||||
public let photoSizeMax: Int32
|
||||
public let videoSizeMax: Int32
|
||||
public let fileSizeMax: Int32
|
||||
public let photoSizeMax: Int64
|
||||
public let videoSizeMax: Int64
|
||||
public let fileSizeMax: Int64
|
||||
public let preloadLargeVideo: Bool
|
||||
public let lessDataForPhoneCalls: Bool
|
||||
public let videoUploadMaxbitrate: Int32
|
||||
|
||||
public init(disabled: Bool, photoSizeMax: Int32, videoSizeMax: Int32, fileSizeMax: Int32, preloadLargeVideo: Bool, lessDataForPhoneCalls: Bool, videoUploadMaxbitrate: Int32) {
|
||||
public init(disabled: Bool, photoSizeMax: Int64, videoSizeMax: Int64, fileSizeMax: Int64, preloadLargeVideo: Bool, lessDataForPhoneCalls: Bool, videoUploadMaxbitrate: Int32) {
|
||||
self.disabled = disabled
|
||||
self.photoSizeMax = photoSizeMax
|
||||
self.videoSizeMax = videoSizeMax
|
||||
@@ -29,9 +29,22 @@ public struct AutodownloadPresetSettings: Codable {
|
||||
let container = try decoder.container(keyedBy: StringCodingKey.self)
|
||||
|
||||
self.disabled = ((try? container.decode(Int32.self, forKey: "disabled")) ?? 0) != 0
|
||||
self.photoSizeMax = (try? container.decode(Int32.self, forKey: "photoSizeMax")) ?? 0
|
||||
self.videoSizeMax = (try? container.decode(Int32.self, forKey: "videoSizeMax")) ?? 0
|
||||
self.fileSizeMax = (try? container.decode(Int32.self, forKey: "fileSizeMax")) ?? 0
|
||||
|
||||
if let photoSizeMax = try? container.decode(Int64.self, forKey: "photoSizeMax64") {
|
||||
self.photoSizeMax = photoSizeMax
|
||||
} else {
|
||||
self.photoSizeMax = Int64((try? container.decode(Int32.self, forKey: "photoSizeMax")) ?? 0)
|
||||
}
|
||||
if let videoSizeMax = try? container.decode(Int64.self, forKey: "videoSizeMax64") {
|
||||
self.videoSizeMax = videoSizeMax
|
||||
} else {
|
||||
self.videoSizeMax = Int64((try? container.decode(Int32.self, forKey: "videoSizeMax")) ?? 0)
|
||||
}
|
||||
if let fileSizeMax = try? container.decode(Int64.self, forKey: "fileSizeMax64") {
|
||||
self.fileSizeMax = fileSizeMax
|
||||
} else {
|
||||
self.fileSizeMax = Int64((try? container.decode(Int32.self, forKey: "fileSizeMax")) ?? 0)
|
||||
}
|
||||
self.preloadLargeVideo = ((try? container.decode(Int32.self, forKey: "preloadLargeVideo")) ?? 0) != 0
|
||||
self.lessDataForPhoneCalls = ((try? container.decode(Int32.self, forKey: "lessDataForPhoneCalls")) ?? 0) != 0
|
||||
self.videoUploadMaxbitrate = (try? container.decode(Int32.self, forKey: "videoUploadMaxbitrate")) ?? 0
|
||||
@@ -41,9 +54,9 @@ public struct AutodownloadPresetSettings: Codable {
|
||||
var container = encoder.container(keyedBy: StringCodingKey.self)
|
||||
|
||||
try container.encode((self.disabled ? 1 : 0) as Int32, forKey: "disabled")
|
||||
try container.encode(self.photoSizeMax, forKey: "photoSizeMax")
|
||||
try container.encode(self.videoSizeMax, forKey: "videoSizeMax")
|
||||
try container.encode(self.fileSizeMax, forKey: "fileSizeMax")
|
||||
try container.encode(self.photoSizeMax, forKey: "photoSizeMax64")
|
||||
try container.encode(self.videoSizeMax, forKey: "videoSizeMax64")
|
||||
try container.encode(self.fileSizeMax, forKey: "fileSizeMax64")
|
||||
try container.encode((self.preloadLargeVideo ? 1 : 0) as Int32, forKey: "preloadLargeVideo")
|
||||
try container.encode((self.lessDataForPhoneCalls ? 1 : 0) as Int32, forKey: "lessDataForPhoneCalls")
|
||||
try container.encode(self.videoUploadMaxbitrate, forKey: "videoUploadMaxbitrate")
|
||||
@@ -58,7 +71,7 @@ public struct AutodownloadSettings: Codable {
|
||||
public static var defaultSettings: AutodownloadSettings {
|
||||
return AutodownloadSettings(
|
||||
lowPreset: AutodownloadPresetSettings(disabled: false, photoSizeMax: 1 * 1024 * 1024, videoSizeMax: 0, fileSizeMax: 0, preloadLargeVideo: false, lessDataForPhoneCalls: true, videoUploadMaxbitrate: 0),
|
||||
mediumPreset: AutodownloadPresetSettings(disabled: false, photoSizeMax: 1 * 1024 * 1024, videoSizeMax: Int32(2.5 * 1024 * 1024), fileSizeMax: 1 * 1024 * 1024, preloadLargeVideo: false, lessDataForPhoneCalls: false, videoUploadMaxbitrate: 0),
|
||||
mediumPreset: AutodownloadPresetSettings(disabled: false, photoSizeMax: 1 * 1024 * 1024, videoSizeMax: Int64(2.5 * 1024 * 1024), fileSizeMax: 1 * 1024 * 1024, preloadLargeVideo: false, lessDataForPhoneCalls: false, videoUploadMaxbitrate: 0),
|
||||
highPreset: AutodownloadPresetSettings(disabled: false, photoSizeMax: 1 * 1024 * 1024, videoSizeMax: 10 * 1024 * 1024, fileSizeMax: 3 * 1024 * 1024, preloadLargeVideo: false, lessDataForPhoneCalls: false, videoUploadMaxbitrate: 0))
|
||||
}
|
||||
|
||||
|
||||
@@ -24,14 +24,14 @@ public final class CloudFileMediaResource: TelegramMediaResource {
|
||||
public let volumeId: Int64
|
||||
public let localId: Int32
|
||||
public let secret: Int64
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
public let fileReference: Data?
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(CloudFileMediaResourceId(datacenterId: self.datacenterId, volumeId: self.volumeId, localId: self.localId, secret: self.secret).uniqueId)
|
||||
}
|
||||
|
||||
public init(datacenterId: Int, volumeId: Int64, localId: Int32, secret: Int64, size: Int?, fileReference: Data?) {
|
||||
public init(datacenterId: Int, volumeId: Int64, localId: Int32, secret: Int64, size: Int64?, fileReference: Data?) {
|
||||
self.datacenterId = datacenterId
|
||||
self.volumeId = volumeId
|
||||
self.localId = localId
|
||||
@@ -45,8 +45,10 @@ public final class CloudFileMediaResource: TelegramMediaResource {
|
||||
self.volumeId = decoder.decodeInt64ForKey("v", orElse: 0)
|
||||
self.localId = decoder.decodeInt32ForKey("l", orElse: 0)
|
||||
self.secret = decoder.decodeInt64ForKey("s", orElse: 0)
|
||||
if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("n64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -59,9 +61,9 @@ public final class CloudFileMediaResource: TelegramMediaResource {
|
||||
encoder.encodeInt32(self.localId, forKey: "l")
|
||||
encoder.encodeInt64(self.secret, forKey: "s")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "n")
|
||||
encoder.encodeInt64(size, forKey: "n64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "n")
|
||||
encoder.encodeNil(forKey: "n64")
|
||||
}
|
||||
if let fileReference = self.fileReference {
|
||||
encoder.encodeBytes(MemoryBuffer(data: fileReference), forKey: "fr")
|
||||
@@ -100,14 +102,14 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource {
|
||||
public let photoId: Int64
|
||||
public let accessHash: Int64
|
||||
public let sizeSpec: String
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
public let fileReference: Data?
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(CloudPhotoSizeMediaResourceId(datacenterId: Int32(self.datacenterId), photoId: self.photoId, sizeSpec: self.sizeSpec).uniqueId)
|
||||
}
|
||||
|
||||
public init(datacenterId: Int32, photoId: Int64, accessHash: Int64, sizeSpec: String, size: Int?, fileReference: Data?) {
|
||||
public init(datacenterId: Int32, photoId: Int64, accessHash: Int64, sizeSpec: String, size: Int64?, fileReference: Data?) {
|
||||
self.datacenterId = Int(datacenterId)
|
||||
self.photoId = photoId
|
||||
self.accessHash = accessHash
|
||||
@@ -121,8 +123,10 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource {
|
||||
self.photoId = decoder.decodeInt64ForKey("i", orElse: 0)
|
||||
self.accessHash = decoder.decodeInt64ForKey("h", orElse: 0)
|
||||
self.sizeSpec = decoder.decodeStringForKey("s", orElse: "")
|
||||
if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("n64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -135,9 +139,9 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource {
|
||||
encoder.encodeInt64(self.accessHash, forKey: "h")
|
||||
encoder.encodeString(self.sizeSpec, forKey: "s")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "n")
|
||||
encoder.encodeInt64(size, forKey: "n64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "n")
|
||||
encoder.encodeNil(forKey: "n64")
|
||||
}
|
||||
if let fileReference = self.fileReference {
|
||||
encoder.encodeBytes(MemoryBuffer(data: fileReference), forKey: "fr")
|
||||
@@ -177,6 +181,9 @@ public final class CloudDocumentSizeMediaResource: TelegramMediaResource {
|
||||
public let accessHash: Int64
|
||||
public let sizeSpec: String
|
||||
public let fileReference: Data?
|
||||
public var size: Int64? {
|
||||
return nil
|
||||
}
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(CloudDocumentSizeMediaResourceId(datacenterId: Int32(self.datacenterId), documentId: self.documentId, sizeSpec: self.sizeSpec).uniqueId)
|
||||
@@ -254,6 +261,9 @@ public final class CloudPeerPhotoSizeMediaResource: TelegramMediaResource {
|
||||
public let sizeSpec: CloudPeerPhotoSizeSpec
|
||||
public let volumeId: Int64?
|
||||
public let localId: Int32?
|
||||
public var size: Int64? {
|
||||
return nil
|
||||
}
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(CloudPeerPhotoSizeMediaResourceId(datacenterId: Int32(self.datacenterId), photoId: self.photoId, sizeSpec: self.sizeSpec, volumeId: self.volumeId, localId: self.localId).uniqueId)
|
||||
@@ -331,6 +341,9 @@ public final class CloudStickerPackThumbnailMediaResource: TelegramMediaResource
|
||||
public let thumbVersion: Int32?
|
||||
public let volumeId: Int64?
|
||||
public let localId: Int32?
|
||||
public var size: Int64? {
|
||||
return nil
|
||||
}
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(CloudStickerPackThumbnailMediaResourceId(datacenterId: Int32(self.datacenterId), thumbVersion: self.thumbVersion, volumeId: self.volumeId, localId: self.localId).uniqueId)
|
||||
@@ -396,7 +409,7 @@ public final class CloudDocumentMediaResource: TelegramMediaResource {
|
||||
public let datacenterId: Int
|
||||
public let fileId: Int64
|
||||
public let accessHash: Int64
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
public let fileReference: Data?
|
||||
public let fileName: String?
|
||||
|
||||
@@ -404,7 +417,7 @@ public final class CloudDocumentMediaResource: TelegramMediaResource {
|
||||
return MediaResourceId(CloudDocumentMediaResourceId(datacenterId: self.datacenterId, fileId: self.fileId).uniqueId)
|
||||
}
|
||||
|
||||
public init(datacenterId: Int, fileId: Int64, accessHash: Int64, size: Int?, fileReference: Data?, fileName: String?) {
|
||||
public init(datacenterId: Int, fileId: Int64, accessHash: Int64, size: Int64?, fileReference: Data?, fileName: String?) {
|
||||
self.datacenterId = datacenterId
|
||||
self.fileId = fileId
|
||||
self.accessHash = accessHash
|
||||
@@ -417,8 +430,10 @@ public final class CloudDocumentMediaResource: TelegramMediaResource {
|
||||
self.datacenterId = Int(decoder.decodeInt32ForKey("d", orElse: 0))
|
||||
self.fileId = decoder.decodeInt64ForKey("f", orElse: 0)
|
||||
self.accessHash = decoder.decodeInt64ForKey("a", orElse: 0)
|
||||
if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("n64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("n") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -431,9 +446,9 @@ public final class CloudDocumentMediaResource: TelegramMediaResource {
|
||||
encoder.encodeInt64(self.fileId, forKey: "f")
|
||||
encoder.encodeInt64(self.accessHash, forKey: "a")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "n")
|
||||
encoder.encodeInt64(size, forKey: "n64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "n")
|
||||
encoder.encodeNil(forKey: "n64")
|
||||
}
|
||||
if let fileReference = self.fileReference {
|
||||
encoder.encodeBytes(MemoryBuffer(data: fileReference), forKey: "fr")
|
||||
@@ -466,11 +481,11 @@ public struct LocalFileMediaResourceId: Hashable, Equatable {
|
||||
|
||||
public class LocalFileMediaResource: TelegramMediaResource, Codable {
|
||||
public let fileId: Int64
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
|
||||
public let isSecretRelated: Bool
|
||||
|
||||
public init(fileId: Int64, size: Int? = nil, isSecretRelated: Bool = false) {
|
||||
public init(fileId: Int64, size: Int64? = nil, isSecretRelated: Bool = false) {
|
||||
self.fileId = fileId
|
||||
self.size = size
|
||||
self.isSecretRelated = isSecretRelated
|
||||
@@ -479,8 +494,10 @@ public class LocalFileMediaResource: TelegramMediaResource, Codable {
|
||||
public required init(decoder: PostboxDecoder) {
|
||||
self.fileId = decoder.decodeInt64ForKey("f", orElse: 0)
|
||||
self.isSecretRelated = decoder.decodeBoolForKey("sr", orElse: false)
|
||||
if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -491,16 +508,20 @@ public class LocalFileMediaResource: TelegramMediaResource, Codable {
|
||||
|
||||
self.fileId = try container.decode(Int64.self, forKey: "f")
|
||||
self.isSecretRelated = try container.decodeIfPresent(Bool.self, forKey: "sr") ?? false
|
||||
self.size = (try container.decodeIfPresent(Int32.self, forKey: "s")).flatMap(Int.init)
|
||||
if let size = try container.decodeIfPresent(Int64.self, forKey: "s64") {
|
||||
self.size = size
|
||||
} else {
|
||||
self.size = (try container.decodeIfPresent(Int32.self, forKey: "s")).flatMap(Int64.init)
|
||||
}
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeInt64(self.fileId, forKey: "f")
|
||||
encoder.encodeBool(self.isSecretRelated, forKey: "sr")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "s")
|
||||
encoder.encodeInt64(size, forKey: "s64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "s")
|
||||
encoder.encodeNil(forKey: "s64")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,7 +530,7 @@ public class LocalFileMediaResource: TelegramMediaResource, Codable {
|
||||
|
||||
try container.encode(self.fileId, forKey: "f")
|
||||
try container.encode(self.isSecretRelated, forKey: "sr")
|
||||
try container.encodeIfPresent(self.size.flatMap(Int32.init), forKey: "s")
|
||||
try container.encodeIfPresent(self.size, forKey: "s64")
|
||||
}
|
||||
|
||||
public var id: MediaResourceId {
|
||||
@@ -537,9 +558,9 @@ public class LocalFileReferenceMediaResource: TelegramMediaResource {
|
||||
public let localFilePath: String
|
||||
public let randomId: Int64
|
||||
public let isUniquelyReferencedTemporaryFile: Bool
|
||||
public let size: Int32?
|
||||
public let size: Int64?
|
||||
|
||||
public init(localFilePath: String, randomId: Int64, isUniquelyReferencedTemporaryFile: Bool = false, size: Int32? = nil) {
|
||||
public init(localFilePath: String, randomId: Int64, isUniquelyReferencedTemporaryFile: Bool = false, size: Int64? = nil) {
|
||||
self.localFilePath = localFilePath
|
||||
self.randomId = randomId
|
||||
self.isUniquelyReferencedTemporaryFile = isUniquelyReferencedTemporaryFile
|
||||
@@ -550,7 +571,13 @@ public class LocalFileReferenceMediaResource: TelegramMediaResource {
|
||||
self.localFilePath = decoder.decodeStringForKey("p", orElse: "")
|
||||
self.randomId = decoder.decodeInt64ForKey("r", orElse: 0)
|
||||
self.isUniquelyReferencedTemporaryFile = decoder.decodeInt32ForKey("t", orElse: 0) != 0
|
||||
self.size = decoder.decodeOptionalInt32ForKey("s")
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
@@ -558,7 +585,7 @@ public class LocalFileReferenceMediaResource: TelegramMediaResource {
|
||||
encoder.encodeInt64(self.randomId, forKey: "r")
|
||||
encoder.encodeInt32(self.isUniquelyReferencedTemporaryFile ? 1 : 0, forKey: "t")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(size, forKey: "s")
|
||||
encoder.encodeInt64(size, forKey: "s64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "s")
|
||||
}
|
||||
@@ -587,17 +614,19 @@ public struct HttpReferenceMediaResourceId: Hashable, Equatable {
|
||||
|
||||
public final class HttpReferenceMediaResource: TelegramMediaResource {
|
||||
public let url: String
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
|
||||
public init(url: String, size: Int?) {
|
||||
public init(url: String, size: Int64?) {
|
||||
self.url = url
|
||||
self.size = size
|
||||
}
|
||||
|
||||
public required init(decoder: PostboxDecoder) {
|
||||
self.url = decoder.decodeStringForKey("u", orElse: "")
|
||||
if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -606,9 +635,9 @@ public final class HttpReferenceMediaResource: TelegramMediaResource {
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeString(self.url, forKey: "u")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "s")
|
||||
encoder.encodeInt64(size, forKey: "s64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "s")
|
||||
encoder.encodeNil(forKey: "s64")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,7 +657,7 @@ public final class HttpReferenceMediaResource: TelegramMediaResource {
|
||||
public struct WebFileReferenceMediaResourceId: Hashable, Equatable {
|
||||
public let url: String
|
||||
public let accessHash: Int64
|
||||
public let size: Int32
|
||||
public let size: Int64
|
||||
|
||||
public var uniqueId: String {
|
||||
return "proxy-\(persistentHash32(self.url))-\(size)-\(accessHash)"
|
||||
@@ -637,29 +666,36 @@ public struct WebFileReferenceMediaResourceId: Hashable, Equatable {
|
||||
|
||||
public final class WebFileReferenceMediaResource: TelegramMediaResource {
|
||||
public let url: String
|
||||
public let size: Int32
|
||||
public let actualSize: Int64
|
||||
public var size: Int64? {
|
||||
return self.actualSize
|
||||
}
|
||||
public let accessHash: Int64
|
||||
|
||||
public init(url: String, size: Int32, accessHash: Int64) {
|
||||
public init(url: String, size: Int64, accessHash: Int64) {
|
||||
self.url = url
|
||||
self.size = size
|
||||
self.actualSize = size
|
||||
self.accessHash = accessHash
|
||||
}
|
||||
|
||||
public required init(decoder: PostboxDecoder) {
|
||||
self.url = decoder.decodeStringForKey("u", orElse: "")
|
||||
self.size = decoder.decodeInt32ForKey("s", orElse: 0)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.actualSize = size
|
||||
} else {
|
||||
self.actualSize = Int64(decoder.decodeInt32ForKey("s", orElse: 0))
|
||||
}
|
||||
self.accessHash = decoder.decodeInt64ForKey("h", orElse: 0)
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeString(self.url, forKey: "u")
|
||||
encoder.encodeInt32(self.size, forKey: "s")
|
||||
encoder.encodeInt64(self.actualSize, forKey: "s64")
|
||||
encoder.encodeInt64(self.accessHash, forKey: "h")
|
||||
}
|
||||
|
||||
public var id: MediaResourceId {
|
||||
return MediaResourceId(WebFileReferenceMediaResourceId(url: self.url, accessHash: accessHash, size: self.size).uniqueId)
|
||||
return MediaResourceId(WebFileReferenceMediaResourceId(url: self.url, accessHash: accessHash, size: self.actualSize).uniqueId)
|
||||
}
|
||||
|
||||
public func isEqual(to: MediaResource) -> Bool {
|
||||
@@ -689,15 +725,15 @@ public struct SecretFileMediaResourceId: Hashable, Equatable {
|
||||
public final class SecretFileMediaResource: TelegramMediaResource {
|
||||
public let fileId: Int64
|
||||
public let accessHash: Int64
|
||||
public var size: Int? {
|
||||
return Int(self.decryptedSize)
|
||||
public var size: Int64? {
|
||||
return self.decryptedSize
|
||||
}
|
||||
public let containerSize: Int32
|
||||
public let decryptedSize: Int32
|
||||
public let containerSize: Int64
|
||||
public let decryptedSize: Int64
|
||||
public let datacenterId: Int
|
||||
public let key: SecretFileEncryptionKey
|
||||
|
||||
public init(fileId: Int64, accessHash: Int64, containerSize: Int32, decryptedSize: Int32, datacenterId: Int, key: SecretFileEncryptionKey) {
|
||||
public init(fileId: Int64, accessHash: Int64, containerSize: Int64, decryptedSize: Int64, datacenterId: Int, key: SecretFileEncryptionKey) {
|
||||
self.fileId = fileId
|
||||
self.accessHash = accessHash
|
||||
self.containerSize = containerSize
|
||||
@@ -709,8 +745,17 @@ public final class SecretFileMediaResource: TelegramMediaResource {
|
||||
public init(decoder: PostboxDecoder) {
|
||||
self.fileId = decoder.decodeInt64ForKey("i", orElse: 0)
|
||||
self.accessHash = decoder.decodeInt64ForKey("a", orElse: 0)
|
||||
self.containerSize = decoder.decodeInt32ForKey("s", orElse: 0)
|
||||
self.decryptedSize = decoder.decodeInt32ForKey("ds", orElse: 0)
|
||||
|
||||
if let containerSize = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.containerSize = containerSize
|
||||
} else {
|
||||
self.containerSize = Int64(decoder.decodeInt32ForKey("s", orElse: 0))
|
||||
}
|
||||
if let decryptedSize = decoder.decodeOptionalInt64ForKey("ds64") {
|
||||
self.decryptedSize = decryptedSize
|
||||
} else {
|
||||
self.decryptedSize = Int64(decoder.decodeInt32ForKey("ds", orElse: 0))
|
||||
}
|
||||
self.datacenterId = Int(decoder.decodeInt32ForKey("d", orElse: 0))
|
||||
self.key = decoder.decodeObjectForKey("k", decoder: { SecretFileEncryptionKey(decoder: $0) }) as! SecretFileEncryptionKey
|
||||
}
|
||||
@@ -718,8 +763,8 @@ public final class SecretFileMediaResource: TelegramMediaResource {
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeInt64(self.fileId, forKey: "i")
|
||||
encoder.encodeInt64(self.accessHash, forKey: "a")
|
||||
encoder.encodeInt32(self.containerSize, forKey: "s")
|
||||
encoder.encodeInt32(self.decryptedSize, forKey: "ds")
|
||||
encoder.encodeInt64(self.containerSize, forKey: "s64")
|
||||
encoder.encodeInt64(self.decryptedSize, forKey: "ds64")
|
||||
encoder.encodeInt32(Int32(self.datacenterId), forKey: "d")
|
||||
encoder.encodeObject(self.key, forKey: "k")
|
||||
}
|
||||
@@ -766,6 +811,10 @@ public struct EmptyMediaResourceId {
|
||||
}
|
||||
|
||||
public final class EmptyMediaResource: TelegramMediaResource {
|
||||
public var size: Int64? {
|
||||
return nil
|
||||
}
|
||||
|
||||
public init() {
|
||||
}
|
||||
|
||||
@@ -801,6 +850,10 @@ public struct WallpaperDataResourceId {
|
||||
}
|
||||
|
||||
public final class WallpaperDataResource: TelegramMediaResource {
|
||||
public var size: Int64? {
|
||||
return nil
|
||||
}
|
||||
|
||||
public let slug: String
|
||||
|
||||
public init(slug: String) {
|
||||
|
||||
@@ -83,9 +83,9 @@ public final class RenderedRecentDownloadItem: Equatable {
|
||||
public let timestamp: Int32
|
||||
public let isSeen: Bool
|
||||
public let resourceId: String
|
||||
public let size: Int
|
||||
public let size: Int64
|
||||
|
||||
public init(message: Message, timestamp: Int32, isSeen: Bool, resourceId: String, size: Int) {
|
||||
public init(message: Message, timestamp: Int32, isSeen: Bool, resourceId: String, size: Int64) {
|
||||
self.message = message
|
||||
self.timestamp = timestamp
|
||||
self.isSeen = isSeen
|
||||
@@ -135,7 +135,7 @@ public func recentDownloadItems(postbox: Postbox) -> Signal<[RenderedRecentDownl
|
||||
continue
|
||||
}
|
||||
|
||||
var size: Int?
|
||||
var size: Int64?
|
||||
for media in message.media {
|
||||
if let result = findMediaResourceById(media: media, resourceId: MediaResourceId(item.resourceId)) {
|
||||
size = result.size
|
||||
|
||||
@@ -3,11 +3,11 @@ import Postbox
|
||||
public final class SecretChatFileReference: PostboxCoding {
|
||||
public let id: Int64
|
||||
public let accessHash: Int64
|
||||
public let size: Int32
|
||||
public let size: Int64
|
||||
public let datacenterId: Int32
|
||||
public let keyFingerprint: Int32
|
||||
|
||||
public init(id: Int64, accessHash: Int64, size: Int32, datacenterId: Int32, keyFingerprint: Int32) {
|
||||
public init(id: Int64, accessHash: Int64, size: Int64, datacenterId: Int32, keyFingerprint: Int32) {
|
||||
self.id = id
|
||||
self.accessHash = accessHash
|
||||
self.size = size
|
||||
@@ -18,7 +18,11 @@ public final class SecretChatFileReference: PostboxCoding {
|
||||
public init(decoder: PostboxDecoder) {
|
||||
self.id = decoder.decodeInt64ForKey("i", orElse: 0)
|
||||
self.accessHash = decoder.decodeInt64ForKey("a", orElse: 0)
|
||||
self.size = decoder.decodeInt32ForKey("s", orElse: 0)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else {
|
||||
self.size = Int64(decoder.decodeInt32ForKey("s", orElse: 0))
|
||||
}
|
||||
self.datacenterId = decoder.decodeInt32ForKey("d", orElse: 0)
|
||||
self.keyFingerprint = decoder.decodeInt32ForKey("f", orElse: 0)
|
||||
}
|
||||
@@ -26,7 +30,7 @@ public final class SecretChatFileReference: PostboxCoding {
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeInt64(self.id, forKey: "i")
|
||||
encoder.encodeInt64(self.accessHash, forKey: "a")
|
||||
encoder.encodeInt32(self.size, forKey: "s")
|
||||
encoder.encodeInt64(self.size, forKey: "s64")
|
||||
encoder.encodeInt32(self.datacenterId, forKey: "d")
|
||||
encoder.encodeInt32(self.keyFingerprint, forKey: "f")
|
||||
}
|
||||
|
||||
@@ -49,10 +49,10 @@ public enum SecretChatOutgoingFileReference: PostboxCoding {
|
||||
|
||||
public struct SecretChatOutgoingFile: PostboxCoding {
|
||||
public let reference: SecretChatOutgoingFileReference
|
||||
public let size: Int32
|
||||
public let size: Int64
|
||||
public let key: SecretFileEncryptionKey
|
||||
|
||||
public init(reference: SecretChatOutgoingFileReference, size: Int32, key: SecretFileEncryptionKey) {
|
||||
public init(reference: SecretChatOutgoingFileReference, size: Int64, key: SecretFileEncryptionKey) {
|
||||
self.reference = reference
|
||||
self.size = size
|
||||
self.key = key
|
||||
@@ -60,13 +60,17 @@ public struct SecretChatOutgoingFile: PostboxCoding {
|
||||
|
||||
public init(decoder: PostboxDecoder) {
|
||||
self.reference = decoder.decodeObjectForKey("r", decoder: { SecretChatOutgoingFileReference(decoder: $0) }) as! SecretChatOutgoingFileReference
|
||||
self.size = decoder.decodeInt32ForKey("s", orElse: 0)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else {
|
||||
self.size = Int64(decoder.decodeInt32ForKey("s", orElse: 0))
|
||||
}
|
||||
self.key = SecretFileEncryptionKey(aesKey: decoder.decodeBytesForKey("k")!.makeData(), aesIv: decoder.decodeBytesForKey("i")!.makeData())
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeObject(self.reference, forKey: "r")
|
||||
encoder.encodeInt32(self.size, forKey: "s")
|
||||
encoder.encodeInt64(self.size, forKey: "s64")
|
||||
encoder.encodeBytes(MemoryBuffer(data: self.key.aesKey), forKey: "k")
|
||||
encoder.encodeBytes(MemoryBuffer(data: self.key.aesIv), forKey: "i")
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@ public final class SecureFileMediaResource: TelegramMediaResource {
|
||||
return Int(self.file.datacenterId)
|
||||
}
|
||||
|
||||
public var size: Int? {
|
||||
return Int(self.file.size)
|
||||
public var size: Int64? {
|
||||
return self.file.size
|
||||
}
|
||||
|
||||
public init(file: SecureIdFileReference) {
|
||||
@@ -37,13 +37,19 @@ public final class SecureFileMediaResource: TelegramMediaResource {
|
||||
}
|
||||
|
||||
public required init(decoder: PostboxDecoder) {
|
||||
self.file = SecureIdFileReference(id: decoder.decodeInt64ForKey("f", orElse: 0), accessHash: decoder.decodeInt64ForKey("a", orElse: 0), size: decoder.decodeInt32ForKey("n", orElse: 0), datacenterId: decoder.decodeInt32ForKey("d", orElse: 0), timestamp: decoder.decodeInt32ForKey("t", orElse: 0), fileHash: decoder.decodeBytesForKey("h")?.makeData() ?? Data(), encryptedSecret: decoder.decodeBytesForKey("s")?.makeData() ?? Data())
|
||||
let size: Int64
|
||||
if let value = decoder.decodeOptionalInt64ForKey("n64") {
|
||||
size = value
|
||||
} else {
|
||||
size = Int64(decoder.decodeInt32ForKey("n", orElse: 0))
|
||||
}
|
||||
self.file = SecureIdFileReference(id: decoder.decodeInt64ForKey("f", orElse: 0), accessHash: decoder.decodeInt64ForKey("a", orElse: 0), size: size, datacenterId: decoder.decodeInt32ForKey("d", orElse: 0), timestamp: decoder.decodeInt32ForKey("t", orElse: 0), fileHash: decoder.decodeBytesForKey("h")?.makeData() ?? Data(), encryptedSecret: decoder.decodeBytesForKey("s")?.makeData() ?? Data())
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeInt64(self.file.id, forKey: "f")
|
||||
encoder.encodeInt64(self.file.accessHash, forKey: "a")
|
||||
encoder.encodeInt32(self.file.size, forKey: "n")
|
||||
encoder.encodeInt64(self.file.size, forKey: "n64")
|
||||
encoder.encodeInt32(self.file.datacenterId, forKey: "d")
|
||||
encoder.encodeInt32(self.file.timestamp, forKey: "t")
|
||||
encoder.encodeBytes(MemoryBuffer(data: self.file.fileHash), forKey: "h")
|
||||
|
||||
@@ -4,13 +4,13 @@ import Postbox
|
||||
public struct SecureIdFileReference: Equatable {
|
||||
public let id: Int64
|
||||
public let accessHash: Int64
|
||||
public let size: Int32
|
||||
public let size: Int64
|
||||
public let datacenterId: Int32
|
||||
public let timestamp: Int32
|
||||
public let fileHash: Data
|
||||
public let encryptedSecret: Data
|
||||
|
||||
public init(id: Int64, accessHash: Int64, size: Int32, datacenterId: Int32, timestamp: Int32, fileHash: Data, encryptedSecret: Data) {
|
||||
public init(id: Int64, accessHash: Int64, size: Int64, datacenterId: Int32, timestamp: Int32, fileHash: Data, encryptedSecret: Data) {
|
||||
self.id = id
|
||||
self.accessHash = accessHash
|
||||
self.size = size
|
||||
|
||||
@@ -307,7 +307,7 @@ public final class TelegramMediaFile: Media, Equatable, Codable {
|
||||
public let videoThumbnails: [TelegramMediaFile.VideoThumbnail]
|
||||
public let immediateThumbnailData: Data?
|
||||
public let mimeType: String
|
||||
public let size: Int?
|
||||
public let size: Int64?
|
||||
public let attributes: [TelegramMediaFileAttribute]
|
||||
public let peerIds: [PeerId] = []
|
||||
|
||||
@@ -328,7 +328,7 @@ public final class TelegramMediaFile: Media, Equatable, Codable {
|
||||
return result.isEmpty ? nil : result
|
||||
}
|
||||
|
||||
public init(fileId: MediaId, partialReference: PartialMediaReference?, resource: TelegramMediaResource, previewRepresentations: [TelegramMediaImageRepresentation], videoThumbnails: [TelegramMediaFile.VideoThumbnail], immediateThumbnailData: Data?, mimeType: String, size: Int?, attributes: [TelegramMediaFileAttribute]) {
|
||||
public init(fileId: MediaId, partialReference: PartialMediaReference?, resource: TelegramMediaResource, previewRepresentations: [TelegramMediaImageRepresentation], videoThumbnails: [TelegramMediaFile.VideoThumbnail], immediateThumbnailData: Data?, mimeType: String, size: Int64?, attributes: [TelegramMediaFileAttribute]) {
|
||||
self.fileId = fileId
|
||||
self.partialReference = partialReference
|
||||
self.resource = resource
|
||||
@@ -348,8 +348,10 @@ public final class TelegramMediaFile: Media, Equatable, Codable {
|
||||
self.videoThumbnails = decoder.decodeObjectArrayForKey("vr")
|
||||
self.immediateThumbnailData = decoder.decodeDataForKey("itd")
|
||||
self.mimeType = decoder.decodeStringForKey("mt", orElse: "")
|
||||
if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int(size)
|
||||
if let size = decoder.decodeOptionalInt64ForKey("s64") {
|
||||
self.size = size
|
||||
} else if let size = decoder.decodeOptionalInt32ForKey("s") {
|
||||
self.size = Int64(size)
|
||||
} else {
|
||||
self.size = nil
|
||||
}
|
||||
@@ -375,9 +377,9 @@ public final class TelegramMediaFile: Media, Equatable, Codable {
|
||||
}
|
||||
encoder.encodeString(self.mimeType, forKey: "mt")
|
||||
if let size = self.size {
|
||||
encoder.encodeInt32(Int32(size), forKey: "s")
|
||||
encoder.encodeInt64(size, forKey: "s64")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "s")
|
||||
encoder.encodeNil(forKey: "s64")
|
||||
}
|
||||
encoder.encodeObjectArray(self.attributes, forKey: "at")
|
||||
}
|
||||
@@ -635,7 +637,7 @@ public final class TelegramMediaFile: Media, Equatable, Codable {
|
||||
return TelegramMediaFile(fileId: self.fileId, partialReference: self.partialReference, resource: resource, previewRepresentations: self.previewRepresentations, videoThumbnails: self.videoThumbnails, immediateThumbnailData: self.immediateThumbnailData, mimeType: self.mimeType, size: self.size, attributes: self.attributes)
|
||||
}
|
||||
|
||||
public func withUpdatedSize(_ size: Int?) -> TelegramMediaFile {
|
||||
public func withUpdatedSize(_ size: Int64?) -> TelegramMediaFile {
|
||||
return TelegramMediaFile(fileId: self.fileId, partialReference: self.partialReference, resource: self.resource, previewRepresentations: self.previewRepresentations, videoThumbnails: self.videoThumbnails, immediateThumbnailData: self.immediateThumbnailData, mimeType: self.mimeType, size: size, attributes: self.attributes)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user