diff --git a/submodules/Components/ReactionListContextMenuContent/Sources/ReactionListContextMenuContent.swift b/submodules/Components/ReactionListContextMenuContent/Sources/ReactionListContextMenuContent.swift index 35cfffdea9..0a1127c202 100644 --- a/submodules/Components/ReactionListContextMenuContent/Sources/ReactionListContextMenuContent.swift +++ b/submodules/Components/ReactionListContextMenuContent/Sources/ReactionListContextMenuContent.swift @@ -370,18 +370,17 @@ public final class ReactionListContextMenuContent: ContextControllerItemsContent } let premiumConfiguration = PremiumConfiguration.with(appConfiguration: self.context.currentAppConfiguration.with { $0 }) - var currentCredibilityIconImage: UIImage? - if item.peer.id != self.context.account.peerId { - if item.peer.isScam { - currentCredibilityIconImage = PresentationResourcesChatList.scamIcon(presentationData.theme, strings: presentationData.strings, type: .regular) - } else if item.peer.isFake { - currentCredibilityIconImage = PresentationResourcesChatList.fakeIcon(presentationData.theme, strings: presentationData.strings, type: .regular) - } else if item.peer.isVerified { - currentCredibilityIconImage = PresentationResourcesChatList.verifiedIcon(presentationData.theme) - } else if item.peer.isPremium && !premiumConfiguration.isPremiumDisabled { - currentCredibilityIconImage = PresentationResourcesChatList.premiumIcon(presentationData.theme) - } + var currentCredibilityIconImage: UIImage? + if item.peer.isScam { + currentCredibilityIconImage = PresentationResourcesChatList.scamIcon(presentationData.theme, strings: presentationData.strings, type: .regular) + } else if item.peer.isFake { + currentCredibilityIconImage = PresentationResourcesChatList.fakeIcon(presentationData.theme, strings: presentationData.strings, type: .regular) + } else if item.peer.isVerified { + currentCredibilityIconImage = PresentationResourcesChatList.verifiedIcon(presentationData.theme) + } else if item.peer.isPremium && !premiumConfiguration.isPremiumDisabled { + currentCredibilityIconImage = PresentationResourcesChatList.premiumIcon(presentationData.theme) } + var additionalTitleInset: CGFloat = 0.0 if let currentCredibilityIconImage = currentCredibilityIconImage { additionalTitleInset += 3.0 + currentCredibilityIconImage.size.width diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index 2541f6c6e8..29f4c82950 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -917,7 +917,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[415997816] = { return Api.help.InviteText.parse_inviteText($0) } dict[-1600596305] = { return Api.help.PassportConfig.parse_passportConfig($0) } dict[-1078332329] = { return Api.help.PassportConfig.parse_passportConfigNotModified($0) } - dict[-533328101] = { return Api.help.PremiumPromo.parse_premiumPromo($0) } + dict[-1974518743] = { return Api.help.PremiumPromo.parse_premiumPromo($0) } dict[-1942390465] = { return Api.help.PromoData.parse_promoData($0) } dict[-1728664459] = { return Api.help.PromoData.parse_promoDataEmpty($0) } dict[235081943] = { return Api.help.RecentMeUrls.parse_recentMeUrls($0) } diff --git a/submodules/TelegramApi/Sources/Api23.swift b/submodules/TelegramApi/Sources/Api23.swift index 7f3d25e3f8..706f76027d 100644 --- a/submodules/TelegramApi/Sources/Api23.swift +++ b/submodules/TelegramApi/Sources/Api23.swift @@ -212,13 +212,13 @@ public extension Api.help { } public extension Api.help { enum PremiumPromo: TypeConstructorDescription { - case premiumPromo(statusText: String, statusEntities: [Api.MessageEntity], videoSections: [String], videos: [Api.Document], currency: String, monthlyAmount: Int64) + case premiumPromo(statusText: String, statusEntities: [Api.MessageEntity], videoSections: [String], videos: [Api.Document], currency: String, monthlyAmount: Int64, users: [Api.User]) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { - case .premiumPromo(let statusText, let statusEntities, let videoSections, let videos, let currency, let monthlyAmount): + case .premiumPromo(let statusText, let statusEntities, let videoSections, let videos, let currency, let monthlyAmount, let users): if boxed { - buffer.appendInt32(-533328101) + buffer.appendInt32(-1974518743) } serializeString(statusText, buffer: buffer, boxed: false) buffer.appendInt32(481674261) @@ -238,14 +238,19 @@ public extension Api.help { } serializeString(currency, buffer: buffer, boxed: false) serializeInt64(monthlyAmount, buffer: buffer, boxed: false) + buffer.appendInt32(481674261) + buffer.appendInt32(Int32(users.count)) + for item in users { + item.serialize(buffer, true) + } break } } public func descriptionFields() -> (String, [(String, Any)]) { switch self { - case .premiumPromo(let statusText, let statusEntities, let videoSections, let videos, let currency, let monthlyAmount): - return ("premiumPromo", [("statusText", String(describing: statusText)), ("statusEntities", String(describing: statusEntities)), ("videoSections", String(describing: videoSections)), ("videos", String(describing: videos)), ("currency", String(describing: currency)), ("monthlyAmount", String(describing: monthlyAmount))]) + case .premiumPromo(let statusText, let statusEntities, let videoSections, let videos, let currency, let monthlyAmount, let users): + return ("premiumPromo", [("statusText", String(describing: statusText)), ("statusEntities", String(describing: statusEntities)), ("videoSections", String(describing: videoSections)), ("videos", String(describing: videos)), ("currency", String(describing: currency)), ("monthlyAmount", String(describing: monthlyAmount)), ("users", String(describing: users))]) } } @@ -268,14 +273,19 @@ public extension Api.help { _5 = parseString(reader) var _6: Int64? _6 = reader.readInt64() + var _7: [Api.User]? + if let _ = reader.readInt32() { + _7 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self) + } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil let _c6 = _6 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 { - return Api.help.PremiumPromo.premiumPromo(statusText: _1!, statusEntities: _2!, videoSections: _3!, videos: _4!, currency: _5!, monthlyAmount: _6!) + let _c7 = _7 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 { + return Api.help.PremiumPromo.premiumPromo(statusText: _1!, statusEntities: _2!, videoSections: _3!, videos: _4!, currency: _5!, monthlyAmount: _6!, users: _7!) } else { return nil diff --git a/submodules/TelegramCore/Sources/State/ManagedPremiumPromoConfigurationUpdates.swift b/submodules/TelegramCore/Sources/State/ManagedPremiumPromoConfigurationUpdates.swift index e36c11ff62..764852ce33 100644 --- a/submodules/TelegramCore/Sources/State/ManagedPremiumPromoConfigurationUpdates.swift +++ b/submodules/TelegramCore/Sources/State/ManagedPremiumPromoConfigurationUpdates.swift @@ -19,6 +19,13 @@ func updatePremiumPromoConfigurationOnce(postbox: Postbox, network: Network) -> return .complete() } return postbox.transaction { transaction -> Void in + if case let .premiumPromo(_, _, _, _, _, _, apiUsers) = result { + let users = apiUsers.map { TelegramUser(user: $0) } + updatePeers(transaction: transaction, peers: users, update: { _, updated -> Peer in + return updated + }) + } + updatePremiumPromoConfiguration(transaction: transaction, { configuration -> PremiumPromoConfiguration in return PremiumPromoConfiguration(apiPremiumPromo: result) }) @@ -54,7 +61,7 @@ private func updatePremiumPromoConfiguration(transaction: Transaction, _ f: (Pre private extension PremiumPromoConfiguration { init(apiPremiumPromo: Api.help.PremiumPromo) { switch apiPremiumPromo { - case let .premiumPromo(statusText, statusEntities, videoSections, videoFiles, currency, monthlyAmount): + case let .premiumPromo(statusText, statusEntities, videoSections, videoFiles, currency, monthlyAmount, _): self.status = statusText self.statusEntities = messageTextEntitiesFromApiEntities(statusEntities) self.currency = currency