mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 21:27:07 +02:00
Update API scheme to layer 185.
This commit is contained in:
parent
f749616dd8
commit
5c797d1f31
20 changed files with 196 additions and 41 deletions
|
@ -2854,6 +2854,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"lng_gift_link_pending_toast" = "Only the recipient can see the link.";
|
||||
"lng_gift_link_pending_footer" = "This link hasn't been activated yet.";
|
||||
|
||||
"lng_gift_stars_title#one" = "{count} Star";
|
||||
"lng_gift_stars_title#other" = "{count} Stars";
|
||||
"lng_gift_stars_outgoing" = "With Stars, {user} will be able to unlock content and services on Telegram.";
|
||||
"lng_gift_stars_incoming" = "Use Stars to unlock content and services on Telegram.";
|
||||
|
||||
"lng_accounts_limit_title" = "Limit Reached";
|
||||
"lng_accounts_limit1#one" = "You have reached the limit of **{count}** connected accounts.";
|
||||
"lng_accounts_limit1#other" = "You have reached the limit of **{count}** connected accounts.";
|
||||
|
|
|
@ -36,7 +36,8 @@ MTPVector<MTPDocumentAttribute> ComposeSendingDocumentAttributes(
|
|||
MTP_double(document->duration() / 1000.),
|
||||
MTP_int(dimensions.width()),
|
||||
MTP_int(dimensions.height()),
|
||||
MTPint())); // preload_prefix_size
|
||||
MTPint(), // preload_prefix_size
|
||||
MTPdouble())); // video_start_ts
|
||||
} else {
|
||||
attributes.push_back(MTP_documentAttributeImageSize(
|
||||
MTP_int(dimensions.width()),
|
||||
|
|
|
@ -2303,8 +2303,9 @@ ClickHandlerPtr MediaDice::MakeHandler(
|
|||
MediaGiftBox::MediaGiftBox(
|
||||
not_null<HistoryItem*> parent,
|
||||
not_null<PeerData*> from,
|
||||
int months)
|
||||
: MediaGiftBox(parent, from, GiftCode{ .months = months }) {
|
||||
GiftType type,
|
||||
int count)
|
||||
: MediaGiftBox(parent, from, GiftCode{ .count = count, .type = type }) {
|
||||
}
|
||||
|
||||
MediaGiftBox::MediaGiftBox(
|
||||
|
|
|
@ -125,10 +125,16 @@ struct GiveawayResults {
|
|||
bool all = false;
|
||||
};
|
||||
|
||||
enum class GiftType : uchar {
|
||||
Premium, // count - months
|
||||
Stars, // count - stars
|
||||
};
|
||||
|
||||
struct GiftCode {
|
||||
QString slug;
|
||||
ChannelData *channel = nullptr;
|
||||
int months = 0;
|
||||
int count = 0;
|
||||
GiftType type = GiftType::Premium;
|
||||
bool viaGiveaway = false;
|
||||
bool unclaimed = false;
|
||||
};
|
||||
|
@ -591,7 +597,8 @@ public:
|
|||
MediaGiftBox(
|
||||
not_null<HistoryItem*> parent,
|
||||
not_null<PeerData*> from,
|
||||
int months);
|
||||
GiftType type,
|
||||
int count);
|
||||
MediaGiftBox(
|
||||
not_null<HistoryItem*> parent,
|
||||
not_null<PeerData*> from,
|
||||
|
|
|
@ -4533,7 +4533,8 @@ void Session::serviceNotification(
|
|||
MTPVector<MTPUsername>(),
|
||||
MTPint(), // stories_max_id
|
||||
MTPPeerColor(), // color
|
||||
MTPPeerColor())); // profile_color
|
||||
MTPPeerColor(), // profile_color
|
||||
MTPint())); // bot_active_users
|
||||
}
|
||||
const auto history = this->history(PeerData::kServiceNotificationsId);
|
||||
const auto insert = [=] {
|
||||
|
|
|
@ -26,6 +26,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "storage/download_manager_mtproto.h"
|
||||
#include "storage/file_download.h" // kMaxFileInMemory
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "ui/color_int_conversion.h"
|
||||
|
||||
namespace Data {
|
||||
namespace {
|
||||
|
@ -43,6 +44,10 @@ using UpdateFlag = StoryUpdate::Flag;
|
|||
};
|
||||
}
|
||||
|
||||
[[nodiscard]] uint32 ParseMilliKelvin(double celcius) {
|
||||
return uint32(std::clamp(celcius + 273.15, 0., 1'000'000.) * 1000.);
|
||||
}
|
||||
|
||||
[[nodiscard]] TextWithEntities StripLinks(TextWithEntities text) {
|
||||
const auto link = [&](const EntityInText &entity) {
|
||||
return (entity.type() == EntityType::CustomUrl)
|
||||
|
@ -83,6 +88,7 @@ using UpdateFlag = StoryUpdate::Flag;
|
|||
}, [&](const MTPDmediaAreaSuggestedReaction &data) {
|
||||
}, [&](const MTPDmediaAreaChannelPost &data) {
|
||||
}, [&](const MTPDmediaAreaUrl &data) {
|
||||
}, [&](const MTPDmediaAreaWeather &data) {
|
||||
}, [&](const MTPDinputMediaAreaChannelPost &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaChannelPost from API."));
|
||||
}, [&](const MTPDinputMediaAreaVenue &data) {
|
||||
|
@ -105,6 +111,7 @@ using UpdateFlag = StoryUpdate::Flag;
|
|||
});
|
||||
}, [&](const MTPDmediaAreaChannelPost &data) {
|
||||
}, [&](const MTPDmediaAreaUrl &data) {
|
||||
}, [&](const MTPDmediaAreaWeather &data) {
|
||||
}, [&](const MTPDinputMediaAreaChannelPost &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaChannelPost from API."));
|
||||
}, [&](const MTPDinputMediaAreaVenue &data) {
|
||||
|
@ -127,6 +134,7 @@ using UpdateFlag = StoryUpdate::Flag;
|
|||
data.vmsg_id().v),
|
||||
});
|
||||
}, [&](const MTPDmediaAreaUrl &data) {
|
||||
}, [&](const MTPDmediaAreaWeather &data) {
|
||||
}, [&](const MTPDinputMediaAreaChannelPost &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaChannelPost from API."));
|
||||
}, [&](const MTPDinputMediaAreaVenue &data) {
|
||||
|
@ -147,6 +155,30 @@ using UpdateFlag = StoryUpdate::Flag;
|
|||
.area = ParseArea(data.vcoordinates()),
|
||||
.url = qs(data.vurl()),
|
||||
});
|
||||
}, [&](const MTPDmediaAreaWeather &data) {
|
||||
}, [&](const MTPDinputMediaAreaChannelPost &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaChannelPost from API."));
|
||||
}, [&](const MTPDinputMediaAreaVenue &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaVenue from API."));
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
[[nodiscard]] auto ParseWeatherArea(const MTPMediaArea &area)
|
||||
-> std::optional<WeatherArea> {
|
||||
auto result = std::optional<WeatherArea>();
|
||||
area.match([&](const MTPDmediaAreaVenue &data) {
|
||||
}, [&](const MTPDmediaAreaGeoPoint &data) {
|
||||
}, [&](const MTPDmediaAreaSuggestedReaction &data) {
|
||||
}, [&](const MTPDmediaAreaChannelPost &data) {
|
||||
}, [&](const MTPDmediaAreaUrl &data) {
|
||||
}, [&](const MTPDmediaAreaWeather &data) {
|
||||
result.emplace(WeatherArea{
|
||||
.area = ParseArea(data.vcoordinates()),
|
||||
.emoji = qs(data.vemoji()),
|
||||
.color = Ui::ColorFromSerialized(data.vcolor().v),
|
||||
.millicelcius = int(data.vtemperature_c().v * 1000.),
|
||||
});
|
||||
}, [&](const MTPDinputMediaAreaChannelPost &data) {
|
||||
LOG(("API Error: Unexpected inputMediaAreaChannelPost from API."));
|
||||
}, [&](const MTPDinputMediaAreaVenue &data) {
|
||||
|
|
|
@ -131,6 +131,17 @@ struct UrlArea {
|
|||
const UrlArea &) = default;
|
||||
};
|
||||
|
||||
struct WeatherArea {
|
||||
StoryArea area;
|
||||
QString emoji;
|
||||
QColor color;
|
||||
int millicelcius = 0;
|
||||
|
||||
friend inline bool operator==(
|
||||
const WeatherArea &,
|
||||
const WeatherArea &) = default;
|
||||
};
|
||||
|
||||
class Story final {
|
||||
public:
|
||||
Story(
|
||||
|
|
|
@ -1522,6 +1522,13 @@ ServiceAction ParseServiceAction(
|
|||
content.peerId = ParsePeerId(data.vpeer());
|
||||
content.transactionId = data.vcharge().data().vid().v;
|
||||
result.content = content;
|
||||
}, [&](const MTPDmessageActionGiftStars &data) {
|
||||
auto content = ActionGiftStars();
|
||||
content.cost = Ui::FillAmountAndCurrency(
|
||||
data.vamount().v,
|
||||
qs(data.vcurrency())).toUtf8();
|
||||
content.stars = data.vstars().v;
|
||||
result.content = content;
|
||||
}, [](const MTPDmessageActionEmpty &data) {});
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -529,7 +529,7 @@ struct ActionWebViewDataSent {
|
|||
|
||||
struct ActionGiftPremium {
|
||||
Utf8String cost;
|
||||
int months;
|
||||
int months = 0;
|
||||
};
|
||||
|
||||
struct ActionTopicCreate {
|
||||
|
@ -583,6 +583,11 @@ struct ActionPaymentRefunded {
|
|||
Utf8String transactionId;
|
||||
};
|
||||
|
||||
struct ActionGiftStars {
|
||||
Utf8String cost;
|
||||
int stars = 0;
|
||||
};
|
||||
|
||||
struct ServiceAction {
|
||||
std::variant<
|
||||
v::null_t,
|
||||
|
@ -625,7 +630,8 @@ struct ServiceAction {
|
|||
ActionGiveawayLaunch,
|
||||
ActionGiveawayResults,
|
||||
ActionBoostApply,
|
||||
ActionPaymentRefunded> content;
|
||||
ActionPaymentRefunded,
|
||||
ActionGiftStars> content;
|
||||
};
|
||||
|
||||
ServiceAction ParseServiceAction(
|
||||
|
|
|
@ -1321,6 +1321,16 @@ auto HtmlWriter::Wrap::pushMessage(
|
|||
+ " refunded back "
|
||||
+ amount;
|
||||
return result;
|
||||
}, [&](const ActionGiftStars &data) {
|
||||
if (!data.stars || data.cost.isEmpty()) {
|
||||
return serviceFrom + " sent you a gift.";
|
||||
}
|
||||
return serviceFrom
|
||||
+ " sent you a gift for "
|
||||
+ data.cost
|
||||
+ ": "
|
||||
+ QString::number(data.stars).toUtf8()
|
||||
+ " Telegram Stars.";
|
||||
}, [](v::null_t) { return QByteArray(); });
|
||||
|
||||
if (!serviceText.isEmpty()) {
|
||||
|
|
|
@ -632,6 +632,15 @@ QByteArray SerializeMessage(
|
|||
pushBare("peer_name", wrapPeerName(data.peerId));
|
||||
push("peer_id", data.peerId);
|
||||
push("charge_id", data.transactionId);
|
||||
}, [&](const ActionGiftStars &data) {
|
||||
pushActor();
|
||||
pushAction("send_stars_gift");
|
||||
if (!data.cost.isEmpty()) {
|
||||
push("cost", data.cost);
|
||||
}
|
||||
if (data.stars) {
|
||||
push("stars", data.stars);
|
||||
}
|
||||
}, [](v::null_t) {});
|
||||
|
||||
if (v::is_null(message.action.content)) {
|
||||
|
|
|
@ -4977,6 +4977,27 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) {
|
|||
return result;
|
||||
};
|
||||
|
||||
auto prepareGiftStars = [&](
|
||||
const MTPDmessageActionGiftStars &action) {
|
||||
auto result = PreparedServiceText();
|
||||
const auto isSelf = (_from->id == _from->session().userPeerId());
|
||||
const auto peer = isSelf ? _history->peer : _from;
|
||||
_history->session().giftBoxStickersPacks().load();
|
||||
const auto amount = action.vamount().v;
|
||||
const auto currency = qs(action.vcurrency());
|
||||
result.links.push_back(peer->createOpenLink());
|
||||
result.text = (isSelf
|
||||
? tr::lng_action_gift_received_me
|
||||
: tr::lng_action_gift_received)(
|
||||
tr::now,
|
||||
lt_user,
|
||||
Ui::Text::Link(peer->name(), 1), // Link 1.
|
||||
lt_cost,
|
||||
{ Ui::FillAmountAndCurrency(amount, currency) },
|
||||
Ui::Text::WithEntities);
|
||||
return result;
|
||||
};
|
||||
|
||||
setServiceText(action.match(
|
||||
prepareChatAddUserText,
|
||||
prepareChatJoinedByLink,
|
||||
|
@ -5020,6 +5041,7 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) {
|
|||
prepareGiveawayResults,
|
||||
prepareBoostApply,
|
||||
preparePaymentRefunded,
|
||||
prepareGiftStars,
|
||||
PrepareEmptyText<MTPDmessageActionRequestedPeerSentMe>,
|
||||
PrepareErrorText<MTPDmessageActionEmpty>));
|
||||
|
||||
|
@ -5072,6 +5094,7 @@ void HistoryItem::applyAction(const MTPMessageAction &action) {
|
|||
_media = std::make_unique<Data::MediaGiftBox>(
|
||||
this,
|
||||
_from,
|
||||
Data::GiftType::Premium,
|
||||
data.vmonths().v);
|
||||
}, [&](const MTPDmessageActionSuggestProfilePhoto &data) {
|
||||
data.vphoto().match([&](const MTPDphoto &photo) {
|
||||
|
@ -5106,10 +5129,17 @@ void HistoryItem::applyAction(const MTPMessageAction &action) {
|
|||
.channel = (boostedId
|
||||
? history()->owner().channel(boostedId).get()
|
||||
: nullptr),
|
||||
.months = data.vmonths().v,
|
||||
.count = data.vmonths().v,
|
||||
.type = Data::GiftType::Premium,
|
||||
.viaGiveaway = data.is_via_giveaway(),
|
||||
.unclaimed = data.is_unclaimed(),
|
||||
});
|
||||
}, [&](const MTPDmessageActionGiftStars &data) {
|
||||
_media = std::make_unique<Data::MediaGiftBox>(
|
||||
this,
|
||||
_from,
|
||||
Data::GiftType::Stars,
|
||||
data.vstars().v);
|
||||
}, [](const auto &) {
|
||||
});
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ PeerId GenerateUser(not_null<History*> history, const QString &name) {
|
|||
MTPVector<MTPUsername>(),
|
||||
MTPint(), // stories_max_id
|
||||
MTPPeerColor(), // color
|
||||
MTPPeerColor())); // profile_color
|
||||
MTPPeerColor(), // profile_color
|
||||
MTPint())); // bot_active_users
|
||||
return peerId;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "history/view/history_view_element.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "main/main_session.h"
|
||||
#include "settings/settings_credits.h" // Settings::CreditsId
|
||||
#include "settings/settings_premium.h" // Settings::ShowGiftPremium
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "window/window_session_controller.h"
|
||||
|
@ -45,6 +46,9 @@ QSize PremiumGift::size() {
|
|||
}
|
||||
|
||||
QString PremiumGift::title() {
|
||||
if (const auto count = stars()) {
|
||||
return tr::lng_gift_stars_title(tr::now, lt_count, count);
|
||||
}
|
||||
return gift()
|
||||
? tr::lng_premium_summary_title(tr::now)
|
||||
: _data.unclaimed
|
||||
|
@ -53,8 +57,16 @@ QString PremiumGift::title() {
|
|||
}
|
||||
|
||||
TextWithEntities PremiumGift::subtitle() {
|
||||
if (gift()) {
|
||||
return { GiftDuration(_data.months) };
|
||||
if (const auto count = stars()) {
|
||||
return outgoingGift()
|
||||
? tr::lng_gift_stars_outgoing(
|
||||
tr::now,
|
||||
lt_user,
|
||||
Ui::Text::Bold(_parent->history()->peer->shortName()),
|
||||
Ui::Text::WithEntities)
|
||||
: tr::lng_gift_stars_incoming(tr::now, Ui::Text::WithEntities);
|
||||
} else if (gift()) {
|
||||
return { GiftDuration(_data.count) };
|
||||
}
|
||||
const auto name = _data.channel ? _data.channel->name() : "channel";
|
||||
auto result = (_data.unclaimed
|
||||
|
@ -74,7 +86,7 @@ TextWithEntities PremiumGift::subtitle() {
|
|||
: tr::lng_prize_gift_duration)(
|
||||
tr::now,
|
||||
lt_duration,
|
||||
Ui::Text::Bold(GiftDuration(_data.months)),
|
||||
Ui::Text::Bold(GiftDuration(_data.count)),
|
||||
Ui::Text::RichLangValue));
|
||||
return result;
|
||||
}
|
||||
|
@ -94,9 +106,11 @@ ClickHandlerPtr PremiumGift::createViewLink() {
|
|||
if (const auto controller = my.sessionWindow.get()) {
|
||||
const auto selfId = controller->session().userPeerId();
|
||||
const auto self = (from->id == selfId);
|
||||
if (data.slug.isEmpty()) {
|
||||
if (data.type == Data::GiftType::Stars) {
|
||||
controller->showSettings(Settings::CreditsId());
|
||||
} else if (data.slug.isEmpty()) {
|
||||
const auto peer = self ? to : from;
|
||||
const auto months = data.months;
|
||||
const auto months = data.count;
|
||||
Settings::ShowGiftPremium(controller, peer, months, self);
|
||||
} else {
|
||||
const auto fromId = from->id;
|
||||
|
@ -162,12 +176,16 @@ bool PremiumGift::gift() const {
|
|||
return _data.slug.isEmpty() || !_data.channel;
|
||||
}
|
||||
|
||||
int PremiumGift::stars() const {
|
||||
return (_data.type == Data::GiftType::Stars) ? _data.count : 0;
|
||||
}
|
||||
|
||||
void PremiumGift::ensureStickerCreated() const {
|
||||
if (_sticker) {
|
||||
return;
|
||||
}
|
||||
const auto &session = _parent->history()->session();
|
||||
const auto months = _gift->data().months;
|
||||
const auto months = stars() ? 1 : _data.count;
|
||||
auto &packs = session.giftBoxStickersPacks();
|
||||
if (const auto document = packs.lookup(months)) {
|
||||
if (const auto sticker = document->sticker()) {
|
||||
|
|
|
@ -49,6 +49,7 @@ private:
|
|||
[[nodiscard]] bool incomingGift() const;
|
||||
[[nodiscard]] bool outgoingGift() const;
|
||||
[[nodiscard]] bool gift() const;
|
||||
[[nodiscard]] int stars() const;
|
||||
void ensureStickerCreated() const;
|
||||
|
||||
const not_null<Element*> _parent;
|
||||
|
|
|
@ -171,7 +171,8 @@ void Account::createSession(
|
|||
MTPVector<MTPUsername>(),
|
||||
MTPint(), // stories_max_id
|
||||
MTPPeerColor(), // color
|
||||
MTPPeerColor()), // profile_color
|
||||
MTPPeerColor(), // profile_color
|
||||
MTPint()), // bot_active_users
|
||||
serialized,
|
||||
streamVersion,
|
||||
std::move(settings));
|
||||
|
|
|
@ -83,7 +83,7 @@ storage.fileMp4#b3cea0e4 = storage.FileType;
|
|||
storage.fileWebp#1081464c = storage.FileType;
|
||||
|
||||
userEmpty#d3bc4b7a id:long = User;
|
||||
user#215c4438 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor = User;
|
||||
user#83314fca flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int = User;
|
||||
|
||||
userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto;
|
||||
userProfilePhoto#82d1f706 flags:# has_video:flags.0?true personal:flags.2?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto;
|
||||
|
@ -180,6 +180,7 @@ messageActionGiveawayResults#2a9fadc5 winners_count:int unclaimed_count:int = Me
|
|||
messageActionBoostApply#cc02aa6d boosts:int = MessageAction;
|
||||
messageActionRequestedPeerSentMe#93b31848 button_id:int peers:Vector<RequestedPeer> = MessageAction;
|
||||
messageActionPaymentRefunded#41b3e202 flags:# peer:Peer currency:string total_amount:long payload:flags.0?bytes charge:PaymentCharge = MessageAction;
|
||||
messageActionGiftStars#45d5b021 flags:# currency:string amount:long stars:long crypto_currency:flags.0?string crypto_amount:flags.0?long transaction_id:flags.1?string = MessageAction;
|
||||
|
||||
dialog#d58a08c6 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog;
|
||||
dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog;
|
||||
|
@ -568,7 +569,7 @@ accountDaysTTL#b8d0afdf days:int = AccountDaysTTL;
|
|||
documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;
|
||||
documentAttributeAnimated#11b58939 = DocumentAttribute;
|
||||
documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute;
|
||||
documentAttributeVideo#d38ff1c2 flags:# round_message:flags.0?true supports_streaming:flags.1?true nosound:flags.3?true duration:double w:int h:int preload_prefix_size:flags.2?int = DocumentAttribute;
|
||||
documentAttributeVideo#17399fad flags:# round_message:flags.0?true supports_streaming:flags.1?true nosound:flags.3?true duration:double w:int h:int preload_prefix_size:flags.2?int video_start_ts:flags.4?double = DocumentAttribute;
|
||||
documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;
|
||||
documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
|
||||
documentAttributeHasStickers#9801d2f7 = DocumentAttribute;
|
||||
|
@ -629,7 +630,7 @@ messages.stickerSetNotModified#d3f924eb = messages.StickerSet;
|
|||
|
||||
botCommand#c27ac8c7 command:string description:string = BotCommand;
|
||||
|
||||
botInfo#8f300b57 flags:# user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector<BotCommand> menu_button:flags.3?BotMenuButton = BotInfo;
|
||||
botInfo#8f300b57 flags:# has_preview_medias:flags.6?true user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector<BotCommand> menu_button:flags.3?BotMenuButton = BotInfo;
|
||||
|
||||
keyboardButton#a2fa4880 text:string = KeyboardButton;
|
||||
keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton;
|
||||
|
@ -789,6 +790,7 @@ topPeerCategoryChannels#161d9628 = TopPeerCategory;
|
|||
topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory;
|
||||
topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory;
|
||||
topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory;
|
||||
topPeerCategoryBotsApp#fd9e7bec = TopPeerCategory;
|
||||
|
||||
topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;
|
||||
|
||||
|
@ -1453,7 +1455,7 @@ attachMenuPeerTypeBroadcast#7bfbdefc = AttachMenuPeerType;
|
|||
inputInvoiceMessage#c5b56859 peer:InputPeer msg_id:int = InputInvoice;
|
||||
inputInvoiceSlug#c326caef slug:string = InputInvoice;
|
||||
inputInvoicePremiumGiftCode#98986c0d purpose:InputStorePaymentPurpose option:PremiumGiftCodeOption = InputInvoice;
|
||||
inputInvoiceStars#1da33ad8 option:StarsTopupOption = InputInvoice;
|
||||
inputInvoiceStars#65f00ce3 purpose:InputStorePaymentPurpose = InputInvoice;
|
||||
|
||||
payments.exportedInvoice#aed0cbd9 url:string = payments.ExportedInvoice;
|
||||
|
||||
|
@ -1465,7 +1467,8 @@ inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true upgra
|
|||
inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentPremiumGiftCode#a3805f3f flags:# users:Vector<InputUser> boost_peer:flags.0?InputPeer currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector<InputPeer> countries_iso2:flags.2?Vector<string> prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStars#4f0ee8df flags:# stars:long currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsTopup#dddd0f56 stars:long currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose;
|
||||
|
||||
premiumGiftOption#74c34319 flags:# months:int currency:string amount:long bot_url:string store_product:flags.0?string = PremiumGiftOption;
|
||||
|
||||
|
@ -1613,6 +1616,7 @@ mediaAreaSuggestedReaction#14455871 flags:# dark:flags.0?true flipped:flags.1?tr
|
|||
mediaAreaChannelPost#770416af coordinates:MediaAreaCoordinates channel_id:long msg_id:int = MediaArea;
|
||||
inputMediaAreaChannelPost#2271f2bf coordinates:MediaAreaCoordinates channel:InputChannel msg_id:int = MediaArea;
|
||||
mediaAreaUrl#37381085 coordinates:MediaAreaCoordinates url:string = MediaArea;
|
||||
mediaAreaWeather#49a6549c coordinates:MediaAreaCoordinates emoji:string temperature_c:double color:int = MediaArea;
|
||||
|
||||
peerStories#9a35e999 flags:# peer:Peer max_read_id:flags.0?int stories:Vector<StoryItem> = PeerStories;
|
||||
|
||||
|
@ -1806,7 +1810,7 @@ starsTransactionPeerAds#60682812 = StarsTransactionPeer;
|
|||
|
||||
starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption;
|
||||
|
||||
starsTransaction#2db5418f flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true id:string stars:long date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> = StarsTransaction;
|
||||
starsTransaction#2db5418f flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true id:string stars:long date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> = StarsTransaction;
|
||||
|
||||
payments.starsStatus#8cf4ee60 flags:# balance:long history:Vector<StarsTransaction> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.StarsStatus;
|
||||
|
||||
|
@ -1826,6 +1830,14 @@ payments.starsRevenueAdsAccountUrl#394e7f21 url:string = payments.StarsRevenueAd
|
|||
|
||||
inputStarsTransaction#206ae6d1 flags:# refund:flags.0?true id:string = InputStarsTransaction;
|
||||
|
||||
starsGiftOption#5e0589f1 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsGiftOption;
|
||||
|
||||
bots.popularAppBots#1991b13b flags:# next_offset:flags.0?string users:Vector<User> = bots.PopularAppBots;
|
||||
|
||||
botPreviewMedia#23e91ba3 date:int media:MessageMedia = BotPreviewMedia;
|
||||
|
||||
bots.previewInfo#ca71d64 media:Vector<BotPreviewMedia> lang_codes:Vector<string> = bots.PreviewInfo;
|
||||
|
||||
---functions---
|
||||
|
||||
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
||||
|
@ -1992,7 +2004,7 @@ contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bo
|
|||
contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked;
|
||||
contacts.search#11f812d8 q:string limit:int = contacts.Found;
|
||||
contacts.resolveUsername#f93ccba3 username:string = contacts.ResolvedPeer;
|
||||
contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true offset:int limit:int hash:long = contacts.TopPeers;
|
||||
contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true bots_app:flags.16?true offset:int limit:int hash:long = contacts.TopPeers;
|
||||
contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = Bool;
|
||||
contacts.resetSaved#879537f1 = Bool;
|
||||
contacts.getSaved#82f1e39f = Vector<SavedContact>;
|
||||
|
@ -2221,6 +2233,7 @@ messages.getAvailableEffects#dea20a39 hash:int = messages.AvailableEffects;
|
|||
messages.editFactCheck#589ee75 peer:InputPeer msg_id:int text:TextWithEntities = Updates;
|
||||
messages.deleteFactCheck#d1da940c peer:InputPeer msg_id:int = Updates;
|
||||
messages.getFactCheck#b9cdc5ee peer:InputPeer msg_id:Vector<int> = Vector<FactCheck>;
|
||||
messages.requestMainWebView#c9e01e7b flags:# compact:flags.7?true peer:InputPeer bot:InputUser start_param:flags.1?string theme_params:flags.0?DataJSON platform:string = WebViewResult;
|
||||
|
||||
updates.getState#edd4882a = updates.State;
|
||||
updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference;
|
||||
|
@ -2349,6 +2362,13 @@ bots.toggleUsername#53ca973 bot:InputUser username:string active:Bool = Bool;
|
|||
bots.canSendMessage#1359f4e6 bot:InputUser = Bool;
|
||||
bots.allowSendMessage#f132e3ef bot:InputUser = Updates;
|
||||
bots.invokeWebViewCustomMethod#87fc5e7 bot:InputUser custom_method:string params:DataJSON = DataJSON;
|
||||
bots.getPopularAppBots#c2510192 offset:string limit:int = bots.PopularAppBots;
|
||||
bots.addPreviewMedia#17aeb75a bot:InputUser lang_code:string media:InputMedia = BotPreviewMedia;
|
||||
bots.editPreviewMedia#8525606f bot:InputUser lang_code:string media:InputMedia new_media:InputMedia = BotPreviewMedia;
|
||||
bots.deletePreviewMedia#2d0135b3 bot:InputUser lang_code:string media:Vector<InputMedia> = Bool;
|
||||
bots.reorderPreviewMedias#b627f3aa bot:InputUser lang_code:string order:Vector<InputMedia> = Bool;
|
||||
bots.getPreviewInfo#423ab3ad bot:InputUser lang_code:string = bots.PreviewInfo;
|
||||
bots.getPreviewMedias#a2a5594d bot:InputUser = Vector<BotPreviewMedia>;
|
||||
|
||||
payments.getPaymentForm#37148dbb flags:# invoice:InputInvoice theme_params:flags.0?DataJSON = payments.PaymentForm;
|
||||
payments.getPaymentReceipt#2478d1cc peer:InputPeer msg_id:int = payments.PaymentReceipt;
|
||||
|
@ -2375,6 +2395,7 @@ payments.getStarsRevenueStats#d91ffad6 flags:# dark:flags.0?true peer:InputPeer
|
|||
payments.getStarsRevenueWithdrawalUrl#13bbe8b3 peer:InputPeer stars:long password:InputCheckPasswordSRP = payments.StarsRevenueWithdrawalUrl;
|
||||
payments.getStarsRevenueAdsAccountUrl#d1d7efc5 peer:InputPeer = payments.StarsRevenueAdsAccountUrl;
|
||||
payments.getStarsTransactionsByID#27842d2e peer:InputPeer id:Vector<InputStarsTransaction> = payments.StarsStatus;
|
||||
payments.getStarsGiftOptions#d3c96bc8 flags:# user_id:flags.0?InputUser = Vector<StarsGiftOption>;
|
||||
|
||||
stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector<InputStickerSetItem> software:flags.3?string = messages.StickerSet;
|
||||
stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet;
|
||||
|
@ -2494,4 +2515,4 @@ smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool;
|
|||
|
||||
fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo;
|
||||
|
||||
// LAYER 184
|
||||
// LAYER 185
|
||||
|
|
|
@ -318,20 +318,11 @@ MTPInputInvoice Form::inputInvoice() const {
|
|||
} else if (const auto slug = std::get_if<InvoiceSlug>(&_id.value)) {
|
||||
return MTP_inputInvoiceSlug(MTP_string(slug->slug));
|
||||
} else if (const auto credits = std::get_if<InvoiceCredits>(&_id.value)) {
|
||||
using Flag = MTPDstarsTopupOption::Flag;
|
||||
const auto emptyFlag = MTPDstarsTopupOption::Flags(0);
|
||||
return MTP_inputInvoiceStars(MTP_starsTopupOption(
|
||||
MTP_flags(emptyFlag
|
||||
| (credits->product.isEmpty()
|
||||
? Flag::f_store_product
|
||||
: emptyFlag)
|
||||
| (credits->extended
|
||||
? Flag::f_extended
|
||||
: emptyFlag)),
|
||||
MTP_long(credits->credits),
|
||||
MTP_string(credits->product),
|
||||
MTP_string(credits->currency),
|
||||
MTP_long(credits->amount)));
|
||||
return MTP_inputInvoiceStars(
|
||||
MTP_inputStorePaymentStarsTopup(
|
||||
MTP_long(credits->credits),
|
||||
MTP_string(credits->currency),
|
||||
MTP_long(credits->amount)));
|
||||
}
|
||||
const auto &giftCode = v::get<InvoicePremiumGiftCode>(_id.value);
|
||||
using Flag = MTPDpremiumGiftCodeOption::Flag;
|
||||
|
|
|
@ -844,7 +844,8 @@ void FileLoadTask::process(Args &&args) {
|
|||
MTP_double(realSeconds),
|
||||
MTP_int(coverWidth),
|
||||
MTP_int(coverHeight),
|
||||
MTPint())); // preload_prefix_size
|
||||
MTPint(), // preload_prefix_size
|
||||
MTPdouble())); // video_start_ts
|
||||
|
||||
if (args.generateGoodThumbnail) {
|
||||
goodThumbnail = video->thumbnail;
|
||||
|
|
|
@ -207,7 +207,8 @@ DocumentData *Document::readFromStreamHelper(
|
|||
MTP_double(duration / 1000.),
|
||||
MTP_int(width),
|
||||
MTP_int(height),
|
||||
MTPint())); // preload_prefix_size
|
||||
MTPint(), // preload_prefix_size
|
||||
MTPdouble())); // video_start_ts
|
||||
} else {
|
||||
attributes.push_back(MTP_documentAttributeImageSize(
|
||||
MTP_int(width),
|
||||
|
|
Loading…
Add table
Reference in a new issue