From f0aca45b113f934408a8679ec629c29190ec1cf0 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 4 Jul 2025 10:04:35 +0400 Subject: [PATCH] Update API scheme on layer 207. --- Telegram/SourceFiles/api/api_premium.cpp | 16 ++++++++++++++++ Telegram/SourceFiles/data/data_star_gift.h | 1 + Telegram/SourceFiles/mtproto/scheme/api.tl | 8 ++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/api/api_premium.cpp b/Telegram/SourceFiles/api/api_premium.cpp index 5119f3908c..946d954466 100644 --- a/Telegram/SourceFiles/api/api_premium.cpp +++ b/Telegram/SourceFiles/api/api_premium.cpp @@ -619,6 +619,8 @@ auto PremiumGiftCodeOptions::requestStarGifts() MTP_int(0) )).done([=](const MTPpayments_StarGifts &result) { result.match([&](const MTPDpayments_starGifts &data) { + _peer->owner().processUsers(data.vusers()); + _peer->owner().processChats(data.vchats()); _giftsHash = data.vhash().v; const auto &list = data.vgifts().v; const auto session = &_peer->session(); @@ -805,6 +807,12 @@ std::optional FromTL( if (!document->sticker()) { return std::optional(); } + const auto releasedById = data.vreleased_by() + ? peerFromMTP(*data.vreleased_by()) + : PeerId(); + const auto releasedBy = releasedById + ? session->data().peer(releasedById).get() + : nullptr; return std::optional(Data::StarGift{ .id = uint64(data.vid().v), .stars = int64(data.vstars().v), @@ -812,6 +820,7 @@ std::optional FromTL( .starsToUpgrade = int64(data.vupgrade_stars().value_or_empty()), .starsResellMin = int64(resellPrice), .document = document, + .releasedBy = releasedBy, .resellTitle = qs(data.vtitle().value_or_empty()), .resellCount = int(data.vavailability_resale().value_or_empty()), .limitedLeft = remaining.value_or_empty(), @@ -841,6 +850,12 @@ std::optional FromTL( || !pattern->document->sticker()) { return std::optional(); } + const auto releasedById = data.vreleased_by() + ? peerFromMTP(*data.vreleased_by()) + : PeerId(); + const auto releasedBy = releasedById + ? session->data().peer(releasedById).get() + : nullptr; auto result = Data::StarGift{ .id = uint64(data.vid().v), .unique = std::make_shared(Data::UniqueGift{ @@ -858,6 +873,7 @@ std::optional FromTL( .pattern = *pattern, }), .document = model->document, + .releasedBy = releasedBy, .limitedLeft = (total - data.vavailability_issued().v), .limitedCount = total, }; diff --git a/Telegram/SourceFiles/data/data_star_gift.h b/Telegram/SourceFiles/data/data_star_gift.h index 3de6c85531..e6e6bc9ca2 100644 --- a/Telegram/SourceFiles/data/data_star_gift.h +++ b/Telegram/SourceFiles/data/data_star_gift.h @@ -68,6 +68,7 @@ struct StarGift { int64 starsToUpgrade = 0; int64 starsResellMin = 0; not_null document; + PeerData *releasedBy = nullptr; QString resellTitle; int resellCount = 0; int limitedLeft = 0; diff --git a/Telegram/SourceFiles/mtproto/scheme/api.tl b/Telegram/SourceFiles/mtproto/scheme/api.tl index 61aff7c1f2..e33dd8366b 100644 --- a/Telegram/SourceFiles/mtproto/scheme/api.tl +++ b/Telegram/SourceFiles/mtproto/scheme/api.tl @@ -1890,11 +1890,11 @@ 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#c62aca28 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 availability_resale:flags.4?long convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long resell_min_stars:flags.4?long title:flags.5?string = StarGift; -starGiftUnique#6411db89 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 resell_stars:flags.4?long = StarGift; +starGift#7f853c12 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 availability_resale:flags.4?long convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long resell_min_stars:flags.4?long title:flags.5?string released_by:flags.6?Peer = StarGift; +starGiftUnique#f63778ae 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 resell_stars:flags.4?long released_by:flags.5?Peer = StarGift; payments.starGiftsNotModified#a388a368 = payments.StarGifts; -payments.starGifts#901689ea hash:int gifts:Vector = payments.StarGifts; +payments.starGifts#2ed82995 hash:int gifts:Vector chats:Vector users:Vector = payments.StarGifts; messageReportOption#7903e3d9 text:string option:bytes = MessageReportOption; @@ -2720,4 +2720,4 @@ smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool; fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo; -// LAYER 206 +// LAYER 207