Various fixes

This commit is contained in:
Ilya Laktyushin 2022-06-11 17:07:13 +04:00
parent f68632cb36
commit 75f7d3e2fb
2 changed files with 27 additions and 13 deletions

View File

@ -354,6 +354,17 @@ func chatContextMenuItems(context: AccountContext, peerId: PeerId, promoInfo: Ch
case let .limitExceeded(count, _): case let .limitExceeded(count, _):
f(.default) f(.default)
if case .filter = location {
var replaceImpl: ((ViewController) -> Void)?
let controller = PremiumLimitScreen(context: context, subject: .chatsPerFolder, count: Int32(count), action: {
let premiumScreen = PremiumIntroScreen(context: context, source: .pinnedChats)
replaceImpl?(premiumScreen)
})
chatListController?.push(controller)
replaceImpl = { [weak controller] c in
controller?.replace(with: c)
}
} else {
var replaceImpl: ((ViewController) -> Void)? var replaceImpl: ((ViewController) -> Void)?
let controller = PremiumLimitScreen(context: context, subject: .pins, count: Int32(count), action: { let controller = PremiumLimitScreen(context: context, subject: .pins, count: Int32(count), action: {
let premiumScreen = PremiumIntroScreen(context: context, source: .pinnedChats) let premiumScreen = PremiumIntroScreen(context: context, source: .pinnedChats)
@ -364,6 +375,7 @@ func chatContextMenuItems(context: AccountContext, peerId: PeerId, promoInfo: Ch
controller?.replace(with: c) controller?.replace(with: c)
} }
} }
}
}) })
}))) })))
} }

View File

@ -2,7 +2,6 @@ import Foundation
import Postbox import Postbox
import SwiftSignalKit import SwiftSignalKit
public enum TogglePeerChatPinnedLocation { public enum TogglePeerChatPinnedLocation {
case group(PeerGroupId) case group(PeerGroupId)
case filter(Int32) case filter(Int32)
@ -17,6 +16,10 @@ func _internal_toggleItemPinned(postbox: Postbox, accountPeerId: PeerId, locatio
return postbox.transaction { transaction -> TogglePeerChatPinnedResult in return postbox.transaction { transaction -> TogglePeerChatPinnedResult in
let isPremium = transaction.getPeer(accountPeerId)?.isPremium ?? false let isPremium = transaction.getPeer(accountPeerId)?.isPremium ?? false
let appConfiguration = transaction.getPreferencesEntry(key: PreferencesKeys.appConfiguration)?.get(AppConfiguration.self) ?? .defaultValue
let limitsConfiguration = transaction.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration)?.get(LimitsConfiguration.self) ?? LimitsConfiguration.defaultValue
let userLimitsConfiguration = UserLimitsConfiguration(appConfiguration: appConfiguration, isPremium: isPremium)
switch location { switch location {
case let .group(groupId): case let .group(groupId):
var itemIds = transaction.getPinnedItemIds(groupId: groupId) var itemIds = transaction.getPinnedItemIds(groupId: groupId)
@ -39,9 +42,8 @@ func _internal_toggleItemPinned(postbox: Postbox, accountPeerId: PeerId, locatio
additionalCount = 1 additionalCount = 1
} }
let appConfiguration = transaction.getPreferencesEntry(key: PreferencesKeys.appConfiguration)?.get(AppConfiguration.self) ?? .defaultValue
let limitsConfiguration = transaction.getPreferencesEntry(key: PreferencesKeys.limitsConfiguration)?.get(LimitsConfiguration.self) ?? LimitsConfiguration.defaultValue
let userLimitsConfiguration = UserLimitsConfiguration(appConfiguration: appConfiguration, isPremium: isPremium)
let limitCount: Int let limitCount: Int
if case .root = groupId { if case .root = groupId {
@ -75,7 +77,7 @@ func _internal_toggleItemPinned(postbox: Postbox, accountPeerId: PeerId, locatio
updatedData.includePeers.removePinnedPeer(peerId) updatedData.includePeers.removePinnedPeer(peerId)
} else { } else {
if !updatedData.includePeers.addPinnedPeer(peerId) { if !updatedData.includePeers.addPinnedPeer(peerId) {
result = .limitExceeded(count: updatedData.includePeers.pinnedPeers.count, limit: 100) result = .limitExceeded(count: updatedData.includePeers.peers.count, limit: Int(userLimitsConfiguration.maxFolderChatsCount))
} }
} }
filters[index] = .filter(id: id, title: title, emoticon: emoticon, data: updatedData) filters[index] = .filter(id: id, title: title, emoticon: emoticon, data: updatedData)