mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 00:21:12 +00:00
129 lines
6.6 KiB
Swift
129 lines
6.6 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import SwiftSignalKit
|
|
import TelegramCore
|
|
|
|
public struct LegacyAutomaticMediaDownloadCategory: PostboxCoding, Equatable {
|
|
public var cellular: Bool
|
|
public var wifi: Bool
|
|
public var sizeLimit: Int32
|
|
|
|
public init(cellular: Bool, wifi: Bool, sizeLimit: Int32) {
|
|
self.cellular = cellular
|
|
self.wifi = wifi
|
|
self.sizeLimit = sizeLimit
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.cellular = decoder.decodeInt32ForKey("cellular", orElse: 0) != 0
|
|
self.wifi = decoder.decodeInt32ForKey("wifi", orElse: 0) != 0
|
|
self.sizeLimit = decoder.decodeInt32ForKey("sizeLimit", orElse: 0)
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
}
|
|
}
|
|
|
|
public struct LegacyAutomaticMediaDownloadCategories: Equatable, PostboxCoding {
|
|
public var photo: LegacyAutomaticMediaDownloadCategory
|
|
public var video: LegacyAutomaticMediaDownloadCategory
|
|
public var file: LegacyAutomaticMediaDownloadCategory
|
|
public var voiceMessage: LegacyAutomaticMediaDownloadCategory
|
|
public var videoMessage: LegacyAutomaticMediaDownloadCategory
|
|
public var saveDownloadedPhotos: Bool
|
|
|
|
public init(photo: LegacyAutomaticMediaDownloadCategory, video: LegacyAutomaticMediaDownloadCategory, file: LegacyAutomaticMediaDownloadCategory, voiceMessage: LegacyAutomaticMediaDownloadCategory, videoMessage: LegacyAutomaticMediaDownloadCategory, saveDownloadedPhotos: Bool) {
|
|
self.photo = photo
|
|
self.video = video
|
|
self.file = file
|
|
self.voiceMessage = voiceMessage
|
|
self.videoMessage = videoMessage
|
|
self.saveDownloadedPhotos = saveDownloadedPhotos
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.photo = decoder.decodeObjectForKey("photo", decoder: LegacyAutomaticMediaDownloadCategory.init(decoder:)) as! LegacyAutomaticMediaDownloadCategory
|
|
self.video = decoder.decodeObjectForKey("video", decoder: LegacyAutomaticMediaDownloadCategory.init(decoder:)) as! LegacyAutomaticMediaDownloadCategory
|
|
self.file = decoder.decodeObjectForKey("file", decoder: LegacyAutomaticMediaDownloadCategory.init(decoder:)) as! LegacyAutomaticMediaDownloadCategory
|
|
self.voiceMessage = decoder.decodeObjectForKey("voiceMessage", decoder: LegacyAutomaticMediaDownloadCategory.init(decoder:)) as! LegacyAutomaticMediaDownloadCategory
|
|
self.videoMessage = decoder.decodeObjectForKey("videoMessage", decoder: LegacyAutomaticMediaDownloadCategory.init(decoder:)) as! LegacyAutomaticMediaDownloadCategory
|
|
self.saveDownloadedPhotos = decoder.decodeInt32ForKey("saveDownloadedPhotos", orElse: 0) != 0
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
}
|
|
}
|
|
|
|
public struct LegacyAutomaticMediaDownloadPeers: Equatable, PostboxCoding {
|
|
public var contacts: LegacyAutomaticMediaDownloadCategories
|
|
public var otherPrivate: LegacyAutomaticMediaDownloadCategories
|
|
public var groups: LegacyAutomaticMediaDownloadCategories
|
|
public var channels: LegacyAutomaticMediaDownloadCategories
|
|
|
|
public init(contacts: LegacyAutomaticMediaDownloadCategories, otherPrivate: LegacyAutomaticMediaDownloadCategories, groups: LegacyAutomaticMediaDownloadCategories, channels: LegacyAutomaticMediaDownloadCategories) {
|
|
self.contacts = contacts
|
|
self.otherPrivate = otherPrivate
|
|
self.groups = groups
|
|
self.channels = channels
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.contacts = decoder.decodeObjectForKey("contacts", decoder: LegacyAutomaticMediaDownloadCategories.init(decoder:)) as! LegacyAutomaticMediaDownloadCategories
|
|
self.otherPrivate = decoder.decodeObjectForKey("otherPrivate", decoder: LegacyAutomaticMediaDownloadCategories.init(decoder:)) as! LegacyAutomaticMediaDownloadCategories
|
|
self.groups = decoder.decodeObjectForKey("groups", decoder: LegacyAutomaticMediaDownloadCategories.init(decoder:)) as! LegacyAutomaticMediaDownloadCategories
|
|
self.channels = decoder.decodeObjectForKey("channels", decoder: LegacyAutomaticMediaDownloadCategories.init(decoder:)) as! LegacyAutomaticMediaDownloadCategories
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
}
|
|
}
|
|
|
|
public struct LegacyAutomaticMediaDownloadSettings: PreferencesEntry, Equatable {
|
|
public var masterEnabled: Bool
|
|
public var peers: LegacyAutomaticMediaDownloadPeers
|
|
public var autoplayGifs: Bool
|
|
public var downloadInBackground: Bool
|
|
|
|
public static var defaultSettings: LegacyAutomaticMediaDownloadSettings {
|
|
let defaultCategory = LegacyAutomaticMediaDownloadCategories(
|
|
photo: LegacyAutomaticMediaDownloadCategory(cellular: true, wifi: true, sizeLimit: Int32.max),
|
|
video: LegacyAutomaticMediaDownloadCategory(cellular: true, wifi: true, sizeLimit: 10 * 1024 * 1024),
|
|
file: LegacyAutomaticMediaDownloadCategory(cellular: false, wifi: false, sizeLimit: 1 * 1024 * 1024),
|
|
voiceMessage: LegacyAutomaticMediaDownloadCategory(cellular: true, wifi: true, sizeLimit: 1 * 1024 * 1024),
|
|
videoMessage: LegacyAutomaticMediaDownloadCategory(cellular: true, wifi: true, sizeLimit: 4 * 1024 * 1024),
|
|
saveDownloadedPhotos: false
|
|
)
|
|
return LegacyAutomaticMediaDownloadSettings(masterEnabled: true, peers: LegacyAutomaticMediaDownloadPeers(
|
|
contacts: defaultCategory,
|
|
otherPrivate: defaultCategory,
|
|
groups: defaultCategory,
|
|
channels: defaultCategory
|
|
), autoplayGifs: true, downloadInBackground: true)
|
|
}
|
|
|
|
init(masterEnabled: Bool, peers: LegacyAutomaticMediaDownloadPeers, autoplayGifs: Bool, downloadInBackground: Bool) {
|
|
self.masterEnabled = masterEnabled
|
|
self.peers = peers
|
|
self.autoplayGifs = autoplayGifs
|
|
self.downloadInBackground = downloadInBackground
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.masterEnabled = decoder.decodeInt32ForKey("masterEnabled", orElse: 1) != 0
|
|
self.peers = (decoder.decodeObjectForKey("peers", decoder: LegacyAutomaticMediaDownloadPeers.init(decoder:)) as? LegacyAutomaticMediaDownloadPeers) ?? LegacyAutomaticMediaDownloadSettings.defaultSettings.peers
|
|
self.autoplayGifs = decoder.decodeInt32ForKey("autoplayGifs", orElse: 1) != 0
|
|
self.downloadInBackground = decoder.decodeInt32ForKey("downloadInBackground", orElse: 1) != 0
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
}
|
|
|
|
public func isEqual(to: PreferencesEntry) -> Bool {
|
|
if let to = to as? LegacyAutomaticMediaDownloadSettings {
|
|
return self == to
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|