[WIP] Saved messages

This commit is contained in:
Isaac
2023-12-28 00:20:23 +04:00
parent ee90dd8332
commit 4b16494e20
53 changed files with 1164 additions and 238 deletions

View File

@@ -2,34 +2,36 @@ import Postbox
import SwiftSignalKit
public struct UserLimitsConfiguration: Equatable {
public let maxPinnedChatCount: Int32
public let maxArchivedPinnedChatCount: 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 maxCaptionLength: Int32
public let maxUploadFileParts: Int32
public let maxAboutLength: Int32
public let maxAnimatedEmojisInText: Int32
public let maxReactionsPerMessage: Int32
public let maxSharedFolderInviteLinks: Int32
public let maxSharedFolderJoin: Int32
public let maxStoryCaptionLength: Int32
public let maxExpiringStoriesCount: Int32
public let maxStoriesWeeklyCount: Int32
public let maxStoriesMonthlyCount: Int32
public let maxStoriesSuggestedReactions: Int32
public let maxGiveawayChannelsCount: Int32
public let maxGiveawayCountriesCount: Int32
public let maxGiveawayPeriodSeconds: Int32
public let maxChannelRecommendationsCount: Int32
public var maxPinnedChatCount: Int32
public var maxPinnedSavedChatCount: Int32
public var maxArchivedPinnedChatCount: Int32
public var maxChannelsCount: Int32
public var maxPublicLinksCount: Int32
public var maxSavedGifCount: Int32
public var maxFavedStickerCount: Int32
public var maxFoldersCount: Int32
public var maxFolderChatsCount: Int32
public var maxCaptionLength: Int32
public var maxUploadFileParts: Int32
public var maxAboutLength: Int32
public var maxAnimatedEmojisInText: Int32
public var maxReactionsPerMessage: Int32
public var maxSharedFolderInviteLinks: Int32
public var maxSharedFolderJoin: Int32
public var maxStoryCaptionLength: Int32
public var maxExpiringStoriesCount: Int32
public var maxStoriesWeeklyCount: Int32
public var maxStoriesMonthlyCount: Int32
public var maxStoriesSuggestedReactions: Int32
public var maxGiveawayChannelsCount: Int32
public var maxGiveawayCountriesCount: Int32
public var maxGiveawayPeriodSeconds: Int32
public var maxChannelRecommendationsCount: Int32
public static var defaultValue: UserLimitsConfiguration {
return UserLimitsConfiguration(
maxPinnedChatCount: 5,
maxPinnedSavedChatCount: 5,
maxArchivedPinnedChatCount: 100,
maxChannelsCount: 500,
maxPublicLinksCount: 10,
@@ -58,6 +60,7 @@ public struct UserLimitsConfiguration: Equatable {
public init(
maxPinnedChatCount: Int32,
maxPinnedSavedChatCount: Int32,
maxArchivedPinnedChatCount: Int32,
maxChannelsCount: Int32,
maxPublicLinksCount: Int32,
@@ -83,6 +86,7 @@ public struct UserLimitsConfiguration: Equatable {
maxChannelRecommendationsCount: Int32
) {
self.maxPinnedChatCount = maxPinnedChatCount
self.maxPinnedSavedChatCount = maxPinnedSavedChatCount
self.maxArchivedPinnedChatCount = maxArchivedPinnedChatCount
self.maxChannelsCount = maxChannelsCount
self.maxPublicLinksCount = maxPublicLinksCount
@@ -112,7 +116,10 @@ public struct UserLimitsConfiguration: Equatable {
extension UserLimitsConfiguration {
init(appConfiguration: AppConfiguration, isPremium: Bool) {
let keySuffix = isPremium ? "_premium" : "_default"
let defaultValue = UserLimitsConfiguration.defaultValue
var defaultValue = UserLimitsConfiguration.defaultValue
if isPremium {
defaultValue.maxPinnedSavedChatCount = 100
}
func getValue(_ key: String, orElse defaultValue: Int32) -> Int32 {
if let value = appConfiguration.data?[key + keySuffix] as? Double {
@@ -131,6 +138,7 @@ extension UserLimitsConfiguration {
}
self.maxPinnedChatCount = getValue("dialogs_pinned_limit", orElse: defaultValue.maxPinnedChatCount)
self.maxPinnedSavedChatCount = getValue("saved_pinned_limit", orElse: defaultValue.maxPinnedSavedChatCount)
self.maxArchivedPinnedChatCount = getValue("dialogs_folder_pinned_limit", orElse: defaultValue.maxArchivedPinnedChatCount)
self.maxChannelsCount = getValue("channels_limit", orElse: defaultValue.maxChannelsCount)
self.maxPublicLinksCount = getValue("channels_public_limit", orElse: defaultValue.maxPublicLinksCount)