Process updateMoveStickerSetToTop update.
This commit is contained in:
parent
c92f741a83
commit
8e5f33e699
|
@ -6740,6 +6740,39 @@ void StickersManager::on_update_sticker_sets_order(StickerType sticker_type,
|
|||
}
|
||||
}
|
||||
|
||||
// -1 - sticker set can't be moved to top, 0 - order wasn't changed, 1 - sticker set was moved to top
|
||||
int StickersManager::move_installed_sticker_set_to_top(StickerType sticker_type, StickerSetId sticker_set_id) {
|
||||
auto type = static_cast<int32>(sticker_type);
|
||||
if (!are_installed_sticker_sets_loaded_[type]) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
vector<StickerSetId> ¤t_sticker_set_ids = installed_sticker_set_ids_[type];
|
||||
auto it = std::find(current_sticker_set_ids.begin(), current_sticker_set_ids.end(), sticker_set_id);
|
||||
if (it == current_sticker_set_ids.end()) {
|
||||
return -1;
|
||||
}
|
||||
if (sticker_set_id == current_sticker_set_ids[0]) {
|
||||
CHECK(it == current_sticker_set_ids.begin());
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::rotate(current_sticker_set_ids.begin(), it, it + 1);
|
||||
|
||||
need_update_installed_sticker_sets_[type] = true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void StickersManager::on_update_move_sticker_set_to_top(StickerType sticker_type, StickerSetId sticker_set_id) {
|
||||
int result = move_installed_sticker_set_to_top(sticker_type, sticker_set_id);
|
||||
if (result < 0) {
|
||||
return reload_installed_sticker_sets(sticker_type, true);
|
||||
}
|
||||
if (result > 0) {
|
||||
send_update_installed_sticker_sets();
|
||||
}
|
||||
}
|
||||
|
||||
void StickersManager::reorder_installed_sticker_sets(StickerType sticker_type,
|
||||
const vector<StickerSetId> &sticker_set_ids,
|
||||
Promise<Unit> &&promise) {
|
||||
|
|
|
@ -213,6 +213,8 @@ class StickersManager final : public Actor {
|
|||
|
||||
void on_update_sticker_sets_order(StickerType sticker_type, const vector<StickerSetId> &sticker_set_ids);
|
||||
|
||||
void on_update_move_sticker_set_to_top(StickerType sticker_type, StickerSetId sticker_set_id);
|
||||
|
||||
std::pair<int32, vector<StickerSetId>> get_archived_sticker_sets(StickerType sticker_type,
|
||||
StickerSetId offset_sticker_set_id, int32 limit,
|
||||
bool force, Promise<Unit> &&promise);
|
||||
|
@ -599,6 +601,8 @@ class StickersManager final : public Actor {
|
|||
|
||||
int apply_installed_sticker_sets_order(StickerType sticker_type, const vector<StickerSetId> &sticker_set_ids);
|
||||
|
||||
int move_installed_sticker_set_to_top(StickerType sticker_type, StickerSetId sticker_set_id);
|
||||
|
||||
void on_update_sticker_set(StickerSet *sticker_set, bool is_installed, bool is_archived, bool is_changed,
|
||||
bool from_database = false);
|
||||
|
||||
|
|
|
@ -3380,6 +3380,12 @@ void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateStickerSetsOrde
|
|||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateMoveStickerSetToTop> update, Promise<Unit> &&promise) {
|
||||
auto sticker_type = get_sticker_type(update->masks_, update->emojis_);
|
||||
td_->stickers_manager_->on_update_move_sticker_set_to_top(sticker_type, StickerSetId(update->stickerset_));
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateReadFeaturedStickers> update,
|
||||
Promise<Unit> &&promise) {
|
||||
td_->stickers_manager_->reload_featured_sticker_sets(StickerType::Regular, true);
|
||||
|
@ -3586,8 +3592,4 @@ void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateRecentReactions
|
|||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateMoveStickerSetToTop> update, Promise<Unit> &&promise) {
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
} // namespace td
|
||||
|
|
|
@ -491,6 +491,7 @@ class UpdatesManager final : public Actor {
|
|||
void on_update(tl_object_ptr<telegram_api::updateNewStickerSet> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateStickerSets> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateStickerSetsOrder> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateMoveStickerSetToTop> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateReadFeaturedStickers> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateReadFeaturedEmojiStickers> update, Promise<Unit> &&promise);
|
||||
void on_update(tl_object_ptr<telegram_api::updateRecentStickers> update, Promise<Unit> &&promise);
|
||||
|
@ -539,8 +540,6 @@ class UpdatesManager final : public Actor {
|
|||
// unsupported updates
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateRecentReactions> update, Promise<Unit> &&promise);
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateMoveStickerSetToTop> update, Promise<Unit> &&promise);
|
||||
};
|
||||
|
||||
} // namespace td
|
||||
|
|
Loading…
Reference in New Issue