MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / requestBoosts

Method requestBoosts

Telegram/SourceFiles/api/api_statistics.cpp:615–684  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

613}
614
615void Boosts::requestBoosts(
616 const Data::BoostsListSlice::OffsetToken &token,
617 Fn<void(Data::BoostsListSlice)> done) {
618 if (_requestId) {
619 return;
620 }
621 constexpr auto kTlFirstSlice = tl::make_int(kFirstSlice);
622 constexpr auto kTlLimit = tl::make_int(kLimit);
623 const auto gifts = token.gifts;
624 _requestId = _api.request(MTPpremium_GetBoostsList(
625 gifts
626 ? MTP_flags(MTPpremium_GetBoostsList::Flag::f_gifts)
627 : MTP_flags(0),
628 _peer->input(),
629 MTP_string(token.next),
630 token.next.isEmpty() ? kTlFirstSlice : kTlLimit
631 )).done([=](const MTPpremium_BoostsList &result) {
632 _requestId = 0;
633
634 const auto &data = result.data();
635 _peer->owner().processUsers(data.vusers());
636
637 auto list = std::vector<Data::Boost>();
638 list.reserve(data.vboosts().v.size());
639 constexpr auto kMonthsDivider = int(30 * 86400);
640 for (const auto &boost : data.vboosts().v) {
641 const auto &data = boost.data();
642 const auto path = data.vused_gift_slug()
643 ? (u"giftcode/"_q + qs(data.vused_gift_slug()->v))
644 : QString();
645 auto giftCodeLink = !path.isEmpty()
646 ? Data::GiftCodeLink{
647 _peer->session().createInternalLink(path),
648 _peer->session().createInternalLinkFull(path),
649 qs(data.vused_gift_slug()->v),
650 }
651 : Data::GiftCodeLink();
652 list.push_back({
653 .id = qs(data.vid()),
654 .userId = UserId(data.vuser_id().value_or_empty()),
655 .giveawayMessage = data.vgiveaway_msg_id()
656 ? FullMsgId{ _peer->id, data.vgiveaway_msg_id()->v }
657 : FullMsgId(),
658 .date = base::unixtime::parse(data.vdate().v),
659 .expiresAt = base::unixtime::parse(data.vexpires().v),
660 .expiresAfterMonths = ((data.vexpires().v - data.vdate().v)
661 / kMonthsDivider),
662 .giftCodeLink = std::move(giftCodeLink),
663 .multiplier = data.vmultiplier().value_or_empty(),
664 .credits = data.vstars().value_or_empty(),
665 .isGift = data.is_gift(),
666 .isGiveaway = data.is_giveaway(),
667 .isUnclaimed = data.is_unclaimed(),
668 });
669 }
670 done(Data::BoostsListSlice{
671 .list = std::move(list),
672 .multipliedTotal = data.vcount().v,

Callers 1

requestNextMethod · 0.80

Calls 15

MTP_flagsFunction · 0.85
MTP_stringFunction · 0.85
qsFunction · 0.85
GiftCodeLinkClass · 0.85
processUsersMethod · 0.80
createInternalLinkMethod · 0.80
QStringClass · 0.50
UserIdClass · 0.50
FullMsgIdClass · 0.50
sendMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected