mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-17 19:09:56 +00:00
86 lines
3.8 KiB
Swift
86 lines
3.8 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
public final class LimitsConfiguration: PreferencesEntry {
|
|
public let maxGroupMemberCount: Int32
|
|
public let maxSupergroupMemberCount: Int32
|
|
public let maxMessageForwardBatchSize: Int32
|
|
public let maxSavedGifCount: Int32
|
|
public let maxRecentStickerCount: Int32
|
|
public let maxMessageEditingInterval: Int32
|
|
|
|
static var defaultValue: LimitsConfiguration {
|
|
return LimitsConfiguration(maxGroupMemberCount: 200, maxSupergroupMemberCount: 5000, maxMessageForwardBatchSize: 50, maxSavedGifCount: 200, maxRecentStickerCount: 20, maxMessageEditingInterval: 2 * 24 * 60 * 60)
|
|
}
|
|
|
|
init(maxGroupMemberCount: Int32, maxSupergroupMemberCount: Int32, maxMessageForwardBatchSize: Int32, maxSavedGifCount: Int32, maxRecentStickerCount: Int32, maxMessageEditingInterval: Int32) {
|
|
self.maxGroupMemberCount = maxGroupMemberCount
|
|
self.maxSupergroupMemberCount = maxSupergroupMemberCount
|
|
self.maxMessageForwardBatchSize = maxMessageForwardBatchSize
|
|
self.maxSavedGifCount = maxSavedGifCount
|
|
self.maxRecentStickerCount = maxRecentStickerCount
|
|
self.maxMessageEditingInterval = maxMessageEditingInterval
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
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")
|
|
}
|
|
|
|
public func isEqual(to: PreferencesEntry) -> Bool {
|
|
guard let to = to as? LimitsConfiguration else {
|
|
return false
|
|
}
|
|
if self.maxGroupMemberCount != to.maxGroupMemberCount {
|
|
return false
|
|
}
|
|
if self.maxSupergroupMemberCount != to.maxSupergroupMemberCount {
|
|
return false
|
|
}
|
|
if self.maxMessageForwardBatchSize != to.maxMessageForwardBatchSize {
|
|
return false
|
|
}
|
|
if self.maxSavedGifCount != to.maxSavedGifCount {
|
|
return false
|
|
}
|
|
if self.maxRecentStickerCount != to.maxRecentStickerCount {
|
|
return false
|
|
}
|
|
if self.maxMessageEditingInterval != to.maxMessageEditingInterval {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
public func currentLimitsConfiguration(modifier: Modifier) -> LimitsConfiguration {
|
|
if let entry = modifier.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration) as? LimitsConfiguration {
|
|
return entry
|
|
} else {
|
|
return LimitsConfiguration.defaultValue
|
|
}
|
|
}
|
|
|
|
func updateLimitsConfiguration(modifier: Modifier, configuration: LimitsConfiguration) {
|
|
if !currentLimitsConfiguration(modifier: modifier).isEqual(to: configuration) {
|
|
modifier.setPreferencesEntry(key: PreferencesKeys.limitsConfiguration, value: configuration)
|
|
}
|
|
}
|