Add td_api::getThemedPremiumStatuses.
This commit is contained in:
parent
899ceecab1
commit
2eba57276a
@ -5575,12 +5575,15 @@ getAttachmentMenuBot bot_user_id:int53 = AttachmentMenuBot;
|
||||
toggleBotIsAddedToAttachmentMenu bot_user_id:int53 is_added:Bool = Ok;
|
||||
|
||||
|
||||
//@description Returns default premium statuses
|
||||
getDefaultPremiumStatuses = PremiumStatuses;
|
||||
//@description Returns up to 8 themed premium statuses, which color must be changed to the color of the Telegram Premium badge
|
||||
getThemedPremiumStatuses = PremiumStatuses;
|
||||
|
||||
//@description Returns recent premium statuses
|
||||
getRecentPremiumStatuses = PremiumStatuses;
|
||||
|
||||
//@description Returns default premium statuses
|
||||
getDefaultPremiumStatuses = PremiumStatuses;
|
||||
|
||||
//@description Clears recent premium statuses
|
||||
clearRecentPremiumStatuses = Ok;
|
||||
|
||||
|
@ -1667,6 +1667,7 @@ void StickersManager::on_load_special_sticker_set(const SpecialStickerSetType &t
|
||||
return;
|
||||
}
|
||||
if (type == SpecialStickerSetType::default_statuses()) {
|
||||
set_promises(pending_get_default_statuses_queries_);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -5457,6 +5458,44 @@ void StickersManager::get_all_animated_emojis(bool is_recursive,
|
||||
promise.set_value(td_api::make_object<td_api::emojis>(std::move(emojis)));
|
||||
}
|
||||
|
||||
void StickersManager::get_default_emoji_statuses(bool is_recursive,
|
||||
Promise<td_api::object_ptr<td_api::premiumStatuses>> &&promise) {
|
||||
TRY_STATUS_PROMISE(promise, G()->close_status());
|
||||
|
||||
auto &special_sticker_set = add_special_sticker_set(SpecialStickerSetType::default_statuses());
|
||||
auto sticker_set = get_sticker_set(special_sticker_set.id_);
|
||||
if (sticker_set == nullptr || !sticker_set->was_loaded_) {
|
||||
if (is_recursive) {
|
||||
return promise.set_value(td_api::make_object<td_api::premiumStatuses>());
|
||||
}
|
||||
|
||||
pending_get_default_statuses_queries_.push_back(PromiseCreator::lambda(
|
||||
[actor_id = actor_id(this), promise = std::move(promise)](Result<Unit> &&result) mutable {
|
||||
if (result.is_error()) {
|
||||
promise.set_error(result.move_as_error());
|
||||
} else {
|
||||
send_closure(actor_id, &StickersManager::get_default_emoji_statuses, true, std::move(promise));
|
||||
}
|
||||
}));
|
||||
load_special_sticker_set(special_sticker_set);
|
||||
return;
|
||||
}
|
||||
|
||||
vector<td_api::object_ptr<td_api::premiumStatus>> statuses;
|
||||
for (auto sticker_id : sticker_set->sticker_ids_) {
|
||||
auto custom_emoji_id = get_custom_emoji_id(sticker_id);
|
||||
if (custom_emoji_id == 0) {
|
||||
LOG(ERROR) << "Ignore wrong sticker " << sticker_id;
|
||||
continue;
|
||||
}
|
||||
statuses.emplace_back(td_api::make_object<td_api::premiumStatus>(custom_emoji_id));
|
||||
if (statuses.size() >= 8) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
promise.set_value(td_api::make_object<td_api::premiumStatuses>(std::move(statuses)));
|
||||
}
|
||||
|
||||
void StickersManager::load_custom_emoji_sticker_from_database(int64 custom_emoji_id, Promise<Unit> &&promise) {
|
||||
CHECK(custom_emoji_id != 0);
|
||||
auto &queries = custom_emoji_load_queries_[custom_emoji_id];
|
||||
|
@ -103,6 +103,8 @@ class StickersManager final : public Actor {
|
||||
|
||||
void get_all_animated_emojis(bool is_recursive, Promise<td_api::object_ptr<td_api::emojis>> &&promise);
|
||||
|
||||
void get_default_emoji_statuses(bool is_recursive, Promise<td_api::object_ptr<td_api::premiumStatuses>> &&promise);
|
||||
|
||||
void get_custom_emoji_stickers(vector<int64> &&document_ids, bool use_database,
|
||||
Promise<td_api::object_ptr<td_api::stickers>> &&promise);
|
||||
|
||||
@ -967,6 +969,8 @@ class StickersManager final : public Actor {
|
||||
vector<Promise<Unit>> pending_get_animated_emoji_queries_;
|
||||
vector<Promise<Unit>> pending_get_premium_gift_option_sticker_queries_;
|
||||
|
||||
vector<Promise<Unit>> pending_get_default_statuses_queries_;
|
||||
|
||||
double next_click_animated_emoji_message_time_ = 0;
|
||||
double next_update_animated_emoji_clicked_time_ = 0;
|
||||
vector<PendingGetAnimatedEmojiClickSticker> pending_get_animated_emoji_click_stickers_;
|
||||
|
@ -6733,6 +6733,12 @@ void Td::on_request(uint64 id, const td_api::setPremiumStatus &request) {
|
||||
contacts_manager_->set_emoji_status(EmojiStatus(request.premium_status_, request.duration_), std::move(promise));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, const td_api::getThemedPremiumStatuses &request) {
|
||||
CHECK_IS_USER();
|
||||
CREATE_REQUEST_PROMISE();
|
||||
stickers_manager_->get_default_emoji_statuses(false, std::move(promise));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, const td_api::getDefaultPremiumStatuses &request) {
|
||||
CHECK_IS_USER();
|
||||
CREATE_REQUEST_PROMISE();
|
||||
|
@ -1014,6 +1014,8 @@ class Td final : public Actor {
|
||||
|
||||
void on_request(uint64 id, const td_api::setPremiumStatus &request);
|
||||
|
||||
void on_request(uint64 id, const td_api::getThemedPremiumStatuses &request);
|
||||
|
||||
void on_request(uint64 id, const td_api::getDefaultPremiumStatuses &request);
|
||||
|
||||
void on_request(uint64 id, const td_api::getRecentPremiumStatuses &request);
|
||||
|
@ -4481,6 +4481,8 @@ class CliClient final : public Actor {
|
||||
get_args(args, custom_emoji_id, until_date);
|
||||
send_request(td_api::make_object<td_api::setPremiumStatus>(
|
||||
td_api::make_object<td_api::premiumStatus>(custom_emoji_id), until_date));
|
||||
} else if (op == "gtps") {
|
||||
send_request(td_api::make_object<td_api::getThemedPremiumStatuses>());
|
||||
} else if (op == "gdps") {
|
||||
send_request(td_api::make_object<td_api::getDefaultPremiumStatuses>());
|
||||
} else if (op == "grps") {
|
||||
|
Loading…
Reference in New Issue
Block a user