diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index f2928d1157..47b65d1f2c 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -14882,7 +14882,6 @@ Sorry for the inconvenience."; "Stories.ToastAddedToFolder_any" = "%@ stories added to folder."; "Stories.ToastAlbumNotAvailable" = "The album is no longer available."; - "Gift.Options.Gift.Premium" = "premium"; "Stars.Transaction.FragmentTopUpTon.Title" = "TON Top-Up"; @@ -14890,3 +14889,6 @@ Sorry for the inconvenience."; "Stars.Transaction.SearchFee.Title" = "Extra Search Fee"; "Stars.Intro.Transaction.SearchFee" = "Extra Search Fee"; + +"PeerInfo.Gifts.Upgradable" = "Upgradable"; + diff --git a/submodules/TelegramCore/Sources/State/Serialization.swift b/submodules/TelegramCore/Sources/State/Serialization.swift index 1cda543eba..182ffef731 100644 --- a/submodules/TelegramCore/Sources/State/Serialization.swift +++ b/submodules/TelegramCore/Sources/State/Serialization.swift @@ -210,7 +210,7 @@ public class BoxedMessage: NSObject { public class Serialization: NSObject, MTSerialization { public func currentLayer() -> UInt { - return 211 + return 212 } public func parseMessage(_ data: Data!) -> Any! { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift b/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift index 286640e38c..7d0bad4bb3 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGifts.swift @@ -1363,8 +1363,11 @@ private final class ProfileGiftsContextImpl { if !filter.contains(.unlimited) { flags |= (1 << 2) } - if !filter.contains(.limited) { - flags |= (1 << 3) + if !filter.contains(.limitedUpgradable) { + flags |= (1 << 7) + } + if !filter.contains(.limitedNonUpgradable) { + flags |= (1 << 8) } if !filter.contains(.unique) { flags |= (1 << 4) @@ -1948,13 +1951,14 @@ public final class ProfileGiftsContext { } public static let unlimited = Filters(rawValue: 1 << 0) - public static let limited = Filters(rawValue: 1 << 1) - public static let unique = Filters(rawValue: 1 << 2) - public static let displayed = Filters(rawValue: 1 << 3) - public static let hidden = Filters(rawValue: 1 << 4) + public static let limitedUpgradable = Filters(rawValue: 1 << 1) + public static let limitedNonUpgradable = Filters(rawValue: 1 << 2) + public static let unique = Filters(rawValue: 1 << 3) + public static let displayed = Filters(rawValue: 1 << 4) + public static let hidden = Filters(rawValue: 1 << 5) public static var All: Filters { - return [.unlimited, .limited, .unique, .displayed, .hidden] + return [.unlimited, .limitedUpgradable, .limitedNonUpgradable, .unique, .displayed, .hidden] } } diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift index 61ecf1ec20..07cb8db0b5 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift @@ -11463,7 +11463,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro } else { updatedFilter.insert(value) } - if !updatedFilter.contains(.unlimited) && !updatedFilter.contains(.limited) && !updatedFilter.contains(.unique) { + if !updatedFilter.contains(.unlimited) && !updatedFilter.contains(.limitedUpgradable) && !updatedFilter.contains(.limitedNonUpgradable) && !updatedFilter.contains(.unique) { updatedFilter.insert(.unlimited) } if !updatedFilter.contains(.displayed) && !updatedFilter.contains(.hidden) { @@ -11479,7 +11479,8 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro let switchToFilter: (ProfileGiftsContext.Filters) -> Void = { [weak giftsContext] value in var updatedFilter = filter updatedFilter.remove(.unlimited) - updatedFilter.remove(.limited) + updatedFilter.remove(.limitedUpgradable) + updatedFilter.remove(.limitedNonUpgradable) updatedFilter.remove(.unique) updatedFilter.insert(value) giftsContext?.updateFilter(updatedFilter) @@ -11501,11 +11502,18 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro switchToFilter(.unlimited) }))) items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Limited, icon: { theme in - return filter.contains(.limited) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil + return filter.contains(.limitedNonUpgradable) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil }, action: { _, f in - toggleFilter(.limited) + toggleFilter(.limitedNonUpgradable) }, longPressAction: { _, f in - switchToFilter(.limited) + switchToFilter(.limitedNonUpgradable) + }))) + items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Upgradable, icon: { theme in + return filter.contains(.limitedUpgradable) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil + }, action: { _, f in + toggleFilter(.limitedUpgradable) + }, longPressAction: { _, f in + switchToFilter(.limitedUpgradable) }))) items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Unique, icon: { theme in return filter.contains(.unique) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/AddGiftsScreen.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/AddGiftsScreen.swift index 1337347ae8..26e09bea73 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/AddGiftsScreen.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/AddGiftsScreen.swift @@ -349,7 +349,7 @@ public final class AddGiftsScreen: ViewControllerComponentContainer { } else { updatedFilter.insert(value) } - if !updatedFilter.contains(.unlimited) && !updatedFilter.contains(.limited) && !updatedFilter.contains(.unique) { + if !updatedFilter.contains(.unlimited) && !updatedFilter.contains(.limitedUpgradable) && !updatedFilter.contains(.limitedNonUpgradable) && !updatedFilter.contains(.unique) { updatedFilter.insert(.unlimited) } if !updatedFilter.contains(.displayed) && !updatedFilter.contains(.hidden) { @@ -365,7 +365,8 @@ public final class AddGiftsScreen: ViewControllerComponentContainer { let switchToFilter: (ProfileGiftsContext.Filters) -> Void = { [weak giftsContext] value in var updatedFilter = filter updatedFilter.remove(.unlimited) - updatedFilter.remove(.limited) + updatedFilter.remove(.limitedUpgradable) + updatedFilter.remove(.limitedNonUpgradable) updatedFilter.remove(.unique) updatedFilter.insert(value) giftsContext?.updateFilter(updatedFilter) @@ -387,11 +388,18 @@ public final class AddGiftsScreen: ViewControllerComponentContainer { switchToFilter(.unlimited) }))) items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Limited, icon: { theme in - return filter.contains(.limited) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil + return filter.contains(.limitedNonUpgradable) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil }, action: { _, f in - toggleFilter(.limited) + toggleFilter(.limitedNonUpgradable) }, longPressAction: { _, f in - switchToFilter(.limited) + switchToFilter(.limitedNonUpgradable) + }))) + items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Upgradable, icon: { theme in + return filter.contains(.limitedUpgradable) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil + }, action: { _, f in + toggleFilter(.limitedUpgradable) + }, longPressAction: { _, f in + switchToFilter(.limitedUpgradable) }))) items.append(.action(ContextMenuActionItem(text: strings.PeerInfo_Gifts_Unique, icon: { theme in return filter.contains(.unique) ? generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) : nil