mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-17 19:09:56 +00:00

Added support for "contact joined" service messages Updated password recovery API Updated Localization APIs Added limited contact presence polling after getDifference
76 lines
4.1 KiB
Swift
76 lines
4.1 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
public struct LimitsConfiguration: Equatable, PreferencesEntry {
|
|
public var maxGroupMemberCount: Int32
|
|
public var maxSupergroupMemberCount: Int32
|
|
public var maxMessageForwardBatchSize: Int32
|
|
public var maxSavedGifCount: Int32
|
|
public var maxRecentStickerCount: Int32
|
|
public var maxMessageEditingInterval: Int32
|
|
public var maxMediaCaptionLength: Int32
|
|
public var canRemoveIncomingMessagesInPrivateChats: Bool
|
|
|
|
public static var defaultValue: LimitsConfiguration {
|
|
return LimitsConfiguration(maxGroupMemberCount: 200, maxSupergroupMemberCount: 5000, maxMessageForwardBatchSize: 50, maxSavedGifCount: 200, maxRecentStickerCount: 20, maxMessageEditingInterval: 2 * 24 * 60 * 60, maxMediaCaptionLength: 1000, canRemoveIncomingMessagesInPrivateChats: false)
|
|
}
|
|
|
|
init(maxGroupMemberCount: Int32, maxSupergroupMemberCount: Int32, maxMessageForwardBatchSize: Int32, maxSavedGifCount: Int32, maxRecentStickerCount: Int32, maxMessageEditingInterval: Int32, maxMediaCaptionLength: Int32, canRemoveIncomingMessagesInPrivateChats: Bool) {
|
|
self.maxGroupMemberCount = maxGroupMemberCount
|
|
self.maxSupergroupMemberCount = maxSupergroupMemberCount
|
|
self.maxMessageForwardBatchSize = maxMessageForwardBatchSize
|
|
self.maxSavedGifCount = maxSavedGifCount
|
|
self.maxRecentStickerCount = maxRecentStickerCount
|
|
self.maxMessageEditingInterval = maxMessageEditingInterval
|
|
self.maxMediaCaptionLength = maxMediaCaptionLength
|
|
self.canRemoveIncomingMessagesInPrivateChats = canRemoveIncomingMessagesInPrivateChats
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.maxGroupMemberCount = decoder.decodeInt32ForKey("maxGroupMemberCount", orElse: 200)
|
|
self.maxSupergroupMemberCount = decoder.decodeInt32ForKey("maxSupergroupMemberCount", orElse: 5000)
|
|
self.maxMessageForwardBatchSize = decoder.decodeInt32ForKey("maxMessageForwardBatchSize", orElse: 50)
|
|
self.maxSavedGifCount = decoder.decodeInt32ForKey("maxSavedGifCount", orElse: 200)
|
|
self.maxRecentStickerCount = decoder.decodeInt32ForKey("maxRecentStickerCount", orElse: 20)
|
|
self.maxMessageEditingInterval = decoder.decodeInt32ForKey("maxMessageEditingInterval", orElse: 2 * 24 * 60 * 60)
|
|
self.maxMediaCaptionLength = decoder.decodeInt32ForKey("maxMediaCaptionLength", orElse: 1000)
|
|
self.canRemoveIncomingMessagesInPrivateChats = decoder.decodeInt32ForKey("canRemoveIncomingMessagesInPrivateChats", orElse: 0) != 0
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeInt32(self.maxGroupMemberCount, forKey: "maxGroupMemberCount")
|
|
encoder.encodeInt32(self.maxSupergroupMemberCount, forKey: "maxSupergroupMemberCount")
|
|
encoder.encodeInt32(self.maxMessageForwardBatchSize, forKey: "maxMessageForwardBatchSize")
|
|
encoder.encodeInt32(self.maxSavedGifCount, forKey: "maxSavedGifCount")
|
|
encoder.encodeInt32(self.maxRecentStickerCount, forKey: "maxRecentStickerCount")
|
|
encoder.encodeInt32(self.maxMessageEditingInterval, forKey: "maxMessageEditingInterval")
|
|
encoder.encodeInt32(self.maxMediaCaptionLength, forKey: "maxMediaCaptionLength")
|
|
encoder.encodeInt32(self.canRemoveIncomingMessagesInPrivateChats ? 1 : 0, forKey: "canRemoveIncomingMessagesInPrivateChats")
|
|
}
|
|
|
|
public func isEqual(to: PreferencesEntry) -> Bool {
|
|
guard let to = to as? LimitsConfiguration else {
|
|
return false
|
|
}
|
|
return self == to
|
|
}
|
|
}
|
|
|
|
public func currentLimitsConfiguration(transaction: Transaction) -> LimitsConfiguration {
|
|
if let entry = transaction.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration) as? LimitsConfiguration {
|
|
return entry
|
|
} else {
|
|
return LimitsConfiguration.defaultValue
|
|
}
|
|
}
|
|
|
|
func updateLimitsConfiguration(transaction: Transaction, configuration: LimitsConfiguration) {
|
|
if !currentLimitsConfiguration(transaction: transaction).isEqual(to: configuration) {
|
|
transaction.setPreferencesEntry(key: PreferencesKeys.limitsConfiguration, value: configuration)
|
|
}
|
|
}
|