diff --git a/td/telegram/StarManager.cpp b/td/telegram/StarManager.cpp index c2b6057a6..abca815f6 100644 --- a/td/telegram/StarManager.cpp +++ b/td/telegram/StarManager.cpp @@ -647,6 +647,18 @@ void StarManager::tear_down() { parent_.reset(); } +td_api::object_ptr StarManager::get_update_owned_star_count_object() const { + return td_api::make_object(owned_star_count_); +} + +void StarManager::on_update_owned_star_count(int64 star_count) { + if (star_count == owned_star_count_) { + return; + } + owned_star_count_ = star_count; + send_closure(G()->td(), &Td::send_update, get_update_owned_star_count_object()); +} + Status StarManager::can_manage_stars(DialogId dialog_id, bool allow_self) const { switch (dialog_id.get_type()) { case DialogType::User: { diff --git a/td/telegram/StarManager.h b/td/telegram/StarManager.h index 4c4356e72..2aa64bfb4 100644 --- a/td/telegram/StarManager.h +++ b/td/telegram/StarManager.h @@ -27,6 +27,8 @@ class StarManager final : public Actor { public: StarManager(Td *td, ActorShared<> parent); + void on_update_owned_star_count(int64 star_count); + void get_star_payment_options(Promise> &&promise); void get_star_gift_payment_options(UserId user_id, Promise> &&promise); @@ -77,9 +79,13 @@ class StarManager final : public Actor { DialogId dialog_id, int64 star_count, telegram_api::object_ptr input_check_password, Promise &&promise); + td_api::object_ptr get_update_owned_star_count_object() const; + Td *td_; ActorShared<> parent_; + int64 owned_star_count_ = (1ll << 62); + FlatHashMap, DialogIdHash> star_transaction_file_source_ids_[2]; }; diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index 67f467690..e9cd82dc7 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -4583,8 +4583,7 @@ void UpdatesManager::on_update(tl_object_ptr update, Promise &&promise) { - send_closure(G()->td(), &Td::send_update, - td_api::make_object(StarManager::get_star_count(update->balance_, true))); + td_->star_manager_->on_update_owned_star_count(StarManager::get_star_count(update->balance_, true)); promise.set_value(Unit()); }