Various improvements

This commit is contained in:
Ilya Laktyushin
2022-05-08 19:34:50 +04:00
parent b997987108
commit 5ded9f78a6
18 changed files with 654 additions and 512 deletions

View File

@@ -46,6 +46,41 @@ public enum EngineConfiguration {
self.maxMessageRevokeIntervalInPrivateChats = maxMessageRevokeIntervalInPrivateChats
}
}
public struct UserLimits: Equatable {
public let maxPinnedChatCount: Int32
public let maxChannelsCount: Int32
public let maxPublicLinksCount: Int32
public let maxSavedGifCount: Int32
public let maxFavedStickerCount: Int32
public let maxFoldersCount: Int32
public let maxFolderChatsCount: Int32
public let maxTextLengthCount: Int32
public static var defaultValue: UserLimits {
return UserLimits(UserLimitsConfiguration.defaultValue)
}
public init(
maxPinnedChatCount: Int32,
maxChannelsCount: Int32,
maxPublicLinksCount: Int32,
maxSavedGifCount: Int32,
maxFavedStickerCount: Int32,
maxFoldersCount: Int32,
maxFolderChatsCount: Int32,
maxTextLengthCount: Int32
) {
self.maxPinnedChatCount = maxPinnedChatCount
self.maxChannelsCount = maxChannelsCount
self.maxPublicLinksCount = maxPublicLinksCount
self.maxSavedGifCount = maxSavedGifCount
self.maxFavedStickerCount = maxFavedStickerCount
self.maxFoldersCount = maxFoldersCount
self.maxFolderChatsCount = maxFolderChatsCount
self.maxTextLengthCount = maxTextLengthCount
}
}
}
extension EngineConfiguration.Limits {
@@ -67,6 +102,21 @@ extension EngineConfiguration.Limits {
}
}
extension EngineConfiguration.UserLimits {
init(_ userLimitsConfiguration: UserLimitsConfiguration) {
self.init(
maxPinnedChatCount: userLimitsConfiguration.maxPinnedChatCount,
maxChannelsCount: userLimitsConfiguration.maxChannelsCount,
maxPublicLinksCount: userLimitsConfiguration.maxPublicLinksCount,
maxSavedGifCount: userLimitsConfiguration.maxSavedGifCount,
maxFavedStickerCount: userLimitsConfiguration.maxFavedStickerCount,
maxFoldersCount: userLimitsConfiguration.maxFoldersCount,
maxFolderChatsCount: userLimitsConfiguration.maxFolderChatsCount,
maxTextLengthCount: userLimitsConfiguration.maxTextLengthCount
)
}
}
public extension TelegramEngine.EngineData.Item {
enum Configuration {
public struct Limits: TelegramEngineDataItem, PostboxViewDataItem {
@@ -89,5 +139,28 @@ public extension TelegramEngine.EngineData.Item {
return EngineConfiguration.Limits(limitsConfiguration)
}
}
public struct UserLimits: TelegramEngineDataItem, PostboxViewDataItem {
public typealias Result = EngineConfiguration.UserLimits
fileprivate let isPremium: Bool
public init(isPremium: Bool) {
self.isPremium = isPremium
}
var key: PostboxViewKey {
return .preferences(keys: Set([PreferencesKeys.appConfiguration]))
}
func extract(view: PostboxView) -> Result {
guard let view = view as? PreferencesView else {
preconditionFailure()
}
guard let appConfiguration = view.values[PreferencesKeys.appConfiguration]?.get(AppConfiguration.self) else {
return EngineConfiguration.UserLimits(UserLimitsConfiguration.defaultValue)
}
return EngineConfiguration.UserLimits(UserLimitsConfiguration(appConfiguration: appConfiguration, isPremium: self.isPremium))
}
}
}
}