From 6cb9264864daa62cfbafd18f0adc2f959cba2538 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 31 Jan 2025 14:57:53 +0400 Subject: [PATCH] Update API scheme to layer 199. --- .../SourceFiles/api/api_global_privacy.cpp | 44 +++++++++++++++---- Telegram/SourceFiles/api/api_global_privacy.h | 16 ++++--- Telegram/SourceFiles/api/api_updates.cpp | 4 +- Telegram/SourceFiles/data/data_channel.cpp | 2 +- .../data/data_message_reactions.cpp | 2 +- Telegram/SourceFiles/mtproto/scheme/api.tl | 15 ++++--- .../payments/payments_reaction_process.cpp | 2 +- 7 files changed, 60 insertions(+), 25 deletions(-) diff --git a/Telegram/SourceFiles/api/api_global_privacy.cpp b/Telegram/SourceFiles/api/api_global_privacy.cpp index 83ad8d156..9e2ab1a38 100644 --- a/Telegram/SourceFiles/api/api_global_privacy.cpp +++ b/Telegram/SourceFiles/api/api_global_privacy.cpp @@ -13,6 +13,32 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Api { +PeerId ParsePaidReactionShownPeer( + not_null session, + const MTPPaidReactionPrivacy &value) { + return value.match([&](const MTPDpaidReactionPrivacyDefault &) { + return session->userPeerId(); + }, [](const MTPDpaidReactionPrivacyAnonymous &) { + return PeerId(); + }, [&](const MTPDpaidReactionPrivacyPeer &data) { + return data.vpeer().match([&](const MTPDinputPeerSelf &) { + return session->userPeerId(); + }, [](const MTPDinputPeerUser &data) { + return peerFromUser(data.vuser_id()); + }, [](const MTPDinputPeerChat &data) { + return peerFromChat(data.vchat_id()); + }, [](const MTPDinputPeerChannel &data) { + return peerFromChannel(data.vchannel_id()); + }, [](const MTPDinputPeerUserFromMessage &data) -> PeerId { + Unexpected("From message peer in ParsePaidReactionShownPeer."); + }, [](const MTPDinputPeerChannelFromMessage &data) -> PeerId { + Unexpected("From message peer in ParsePaidReactionShownPeer."); + }, [](const MTPDinputPeerEmpty &) -> PeerId { + Unexpected("Empty peer in ParsePaidReactionShownPeer."); + }); + }); +} + GlobalPrivacy::GlobalPrivacy(not_null api) : _session(&api->session()) , _api(&api->instance()) { @@ -115,27 +141,27 @@ rpl::producer GlobalPrivacy::newRequirePremium() const { return _newRequirePremium.value(); } -void GlobalPrivacy::loadPaidReactionAnonymous() { - if (_paidReactionAnonymousLoaded) { +void GlobalPrivacy::loadPaidReactionShownPeer() { + if (_paidReactionShownPeerLoaded) { return; } - _paidReactionAnonymousLoaded = true; + _paidReactionShownPeerLoaded = true; _api.request(MTPmessages_GetPaidReactionPrivacy( )).done([=](const MTPUpdates &result) { _session->api().applyUpdates(result); }).send(); } -void GlobalPrivacy::updatePaidReactionAnonymous(bool value) { - _paidReactionAnonymous = value; +void GlobalPrivacy::updatePaidReactionShownPeer(PeerId shownPeer) { + _paidReactionShownPeer = shownPeer; } -bool GlobalPrivacy::paidReactionAnonymousCurrent() const { - return _paidReactionAnonymous.current(); +PeerId GlobalPrivacy::paidReactionShownPeerCurrent() const { + return _paidReactionShownPeer.current(); } -rpl::producer GlobalPrivacy::paidReactionAnonymous() const { - return _paidReactionAnonymous.value(); +rpl::producer GlobalPrivacy::paidReactionShownPeer() const { + return _paidReactionShownPeer.value(); } void GlobalPrivacy::updateArchiveAndMute(bool value) { diff --git a/Telegram/SourceFiles/api/api_global_privacy.h b/Telegram/SourceFiles/api/api_global_privacy.h index aa7bb28fe..6c5848961 100644 --- a/Telegram/SourceFiles/api/api_global_privacy.h +++ b/Telegram/SourceFiles/api/api_global_privacy.h @@ -23,6 +23,10 @@ enum class UnarchiveOnNewMessage { AnyUnmuted, }; +[[nodiscard]] PeerId ParsePaidReactionShownPeer( + not_null session, + const MTPPaidReactionPrivacy &value); + class GlobalPrivacy final { public: explicit GlobalPrivacy(not_null api); @@ -49,10 +53,10 @@ public: [[nodiscard]] bool newRequirePremiumCurrent() const; [[nodiscard]] rpl::producer newRequirePremium() const; - void loadPaidReactionAnonymous(); - void updatePaidReactionAnonymous(bool value); - [[nodiscard]] bool paidReactionAnonymousCurrent() const; - [[nodiscard]] rpl::producer paidReactionAnonymous() const; + void loadPaidReactionShownPeer(); + void updatePaidReactionShownPeer(PeerId shownPeer); + [[nodiscard]] PeerId paidReactionShownPeerCurrent() const; + [[nodiscard]] rpl::producer paidReactionShownPeer() const; private: void apply(const MTPGlobalPrivacySettings &data); @@ -72,9 +76,9 @@ private: rpl::variable _showArchiveAndMute = false; rpl::variable _hideReadTime = false; rpl::variable _newRequirePremium = false; - rpl::variable _paidReactionAnonymous = false; + rpl::variable _paidReactionShownPeer = false; std::vector> _callbacks; - bool _paidReactionAnonymousLoaded = false; + bool _paidReactionShownPeerLoaded = false; }; diff --git a/Telegram/SourceFiles/api/api_updates.cpp b/Telegram/SourceFiles/api/api_updates.cpp index c55fb0d01..89ece13a5 100644 --- a/Telegram/SourceFiles/api/api_updates.cpp +++ b/Telegram/SourceFiles/api/api_updates.cpp @@ -2709,8 +2709,8 @@ void Updates::feedUpdate(const MTPUpdate &update) { case mtpc_updatePaidReactionPrivacy: { const auto &data = update.c_updatePaidReactionPrivacy(); - _session->api().globalPrivacy().updatePaidReactionAnonymous( - mtpIsTrue(data.vprivate())); + _session->api().globalPrivacy().updatePaidReactionShownPeer( + Api::ParsePaidReactionShownPeer(_session, data.vprivate())); } break; } diff --git a/Telegram/SourceFiles/data/data_channel.cpp b/Telegram/SourceFiles/data/data_channel.cpp index 22041523d..79b9fe4e6 100644 --- a/Telegram/SourceFiles/data/data_channel.cpp +++ b/Telegram/SourceFiles/data/data_channel.cpp @@ -1012,7 +1012,7 @@ PeerId ChannelData::groupCallDefaultJoinAs() const { void ChannelData::setAllowedReactions(Data::AllowedReactions value) { if (_allowedReactions != value) { if (value.paidEnabled) { - session().api().globalPrivacy().loadPaidReactionAnonymous(); + session().api().globalPrivacy().loadPaidReactionShownPeer(); } const auto enabled = [](const Data::AllowedReactions &allowed) { return (allowed.type != Data::AllowedReactionsType::Some) diff --git a/Telegram/SourceFiles/data/data_message_reactions.cpp b/Telegram/SourceFiles/data/data_message_reactions.cpp index eecddeb5c..cc6cf8d89 100644 --- a/Telegram/SourceFiles/data/data_message_reactions.cpp +++ b/Telegram/SourceFiles/data/data_message_reactions.cpp @@ -2328,7 +2328,7 @@ bool MessageReactions::localPaidAnonymous() const { } } const auto api = &_item->history()->session().api(); - return api->globalPrivacy().paidReactionAnonymousCurrent(); + return api->globalPrivacy().paidReactionShownPeerCurrent() != 0; }; return _paid && ((_paid->scheduledFlag && _paid->scheduledPrivacySet) diff --git a/Telegram/SourceFiles/mtproto/scheme/api.tl b/Telegram/SourceFiles/mtproto/scheme/api.tl index 9e24104e5..560bf29ad 100644 --- a/Telegram/SourceFiles/mtproto/scheme/api.tl +++ b/Telegram/SourceFiles/mtproto/scheme/api.tl @@ -426,7 +426,7 @@ updateStarsBalance#4e80a379 balance:StarsAmount = Update; updateBusinessBotCallbackQuery#1ea2fda7 flags:# query_id:long user_id:long connection_id:string message:Message reply_to_message:flags.2?Message chat_instance:long data:flags.0?bytes = Update; updateStarsRevenueStatus#a584b019 peer:Peer status:StarsRevenueStatus = Update; updateBotPurchasedPaidMedia#283bd312 user_id:long payload:string qts:int = Update; -updatePaidReactionPrivacy#51ca7aec private:Bool = Update; +updatePaidReactionPrivacy#8b725fce private:PaidReactionPrivacy = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; @@ -1877,7 +1877,7 @@ starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption; starGift#2cc73c8 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long = StarGift; -starGiftUnique#f2fe7e4a flags:# id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector availability_issued:int availability_total:int = StarGift; +starGiftUnique#5c62d151 flags:# id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector availability_issued:int availability_total:int gift_address:flags.3?string = StarGift; payments.starGiftsNotModified#a388a368 = payments.StarGifts; payments.starGifts#901689ea hash:int gifts:Vector = payments.StarGifts; @@ -1934,6 +1934,10 @@ inputSavedStarGiftChat#f101aa7f peer:InputPeer saved_id:long = InputSavedStarGif payments.starGiftWithdrawalUrl#84aa3a9c url:string = payments.StarGiftWithdrawalUrl; +paidReactionPrivacyDefault#206ad49e = PaidReactionPrivacy; +paidReactionPrivacyAnonymous#1f0c1ad9 = PaidReactionPrivacy; +paidReactionPrivacyPeer#dc6cfcf0 peer:InputPeer = PaidReactionPrivacy; + ---functions--- invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; @@ -1946,6 +1950,7 @@ invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; invokeWithBusinessConnection#dd289f8e {X:Type} connection_id:string query:!X = X; invokeWithGooglePlayIntegrity#1df92984 {X:Type} nonce:string token:string query:!X = X; invokeWithApnsSecret#0dae54f8 {X:Type} nonce:string secret:string query:!X = X; +invokeWithReCaptcha#adbb0f94 {X:Type} token:string query:!X = X; auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; auth.signUp#aac7b717 flags:# no_joined_notifications:flags.0?true phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; @@ -2331,8 +2336,8 @@ messages.editFactCheck#589ee75 peer:InputPeer msg_id:int text:TextWithEntities = messages.deleteFactCheck#d1da940c peer:InputPeer msg_id:int = Updates; messages.getFactCheck#b9cdc5ee peer:InputPeer msg_id:Vector = Vector; messages.requestMainWebView#c9e01e7b flags:# compact:flags.7?true fullscreen:flags.8?true peer:InputPeer bot:InputUser start_param:flags.1?string theme_params:flags.0?DataJSON platform:string = WebViewResult; -messages.sendPaidReaction#9dd6a67b flags:# peer:InputPeer msg_id:int count:int random_id:long private:flags.0?Bool = Updates; -messages.togglePaidReactionPrivacy#849ad397 peer:InputPeer msg_id:int private:Bool = Bool; +messages.sendPaidReaction#58bbcb50 flags:# peer:InputPeer msg_id:int count:int random_id:long private:flags.0?PaidReactionPrivacy = Updates; +messages.togglePaidReactionPrivacy#435885b5 peer:InputPeer msg_id:int private:PaidReactionPrivacy = Bool; messages.getPaidReactionPrivacy#472455aa = Updates; messages.viewSponsoredMessage#673ad8f1 peer:InputPeer random_id:bytes = Bool; messages.clickSponsoredMessage#f093465 flags:# media:flags.0?true fullscreen:flags.1?true peer:InputPeer random_id:bytes = Bool; @@ -2648,4 +2653,4 @@ smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool; fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo; -// LAYER 198 +// LAYER 199 diff --git a/Telegram/SourceFiles/payments/payments_reaction_process.cpp b/Telegram/SourceFiles/payments/payments_reaction_process.cpp index 7050fa120..7446dfec9 100644 --- a/Telegram/SourceFiles/payments/payments_reaction_process.cpp +++ b/Telegram/SourceFiles/payments/payments_reaction_process.cpp @@ -230,7 +230,7 @@ void ShowPaidReactionDetails( add(entry); entry.peer = nullptr; add(entry); - if (session->api().globalPrivacy().paidReactionAnonymousCurrent()) { + if (session->api().globalPrivacy().paidReactionShownPeerCurrent()) { std::swap(top.front(), top.back()); } }