diff --git a/td/telegram/WallpaperManager.cpp b/td/telegram/WallpaperManager.cpp index 3aa6378b5..6740c7d23 100644 --- a/td/telegram/WallpaperManager.cpp +++ b/td/telegram/WallpaperManager.cpp @@ -55,6 +55,10 @@ void WallpaperManager::get_wallpapers(Promise &&promise) { return promise.set_value(Unit()); } + reload_wallpapers(std::move(promise)); +} + +void WallpaperManager::reload_wallpapers(Promise &&promise) { pending_get_wallpapers_queries_.push_back(std::move(promise)); if (pending_get_wallpapers_queries_.size() == 1) { auto request_promise = PromiseCreator::lambda( @@ -67,13 +71,13 @@ void WallpaperManager::get_wallpapers(Promise &&promise) { } void WallpaperManager::on_get_wallpapers(Result>> result) { - CHECK(wallpapers_.empty()); - auto promises = std::move(pending_get_wallpapers_queries_); CHECK(!promises.empty()); reset_to_empty(pending_get_wallpapers_queries_); if (result.is_error()) { + // do not clear wallpapers_ + auto error = result.move_as_error(); for (auto &promise : promises) { promise.set_error(error.clone()); diff --git a/td/telegram/WallpaperManager.h b/td/telegram/WallpaperManager.h index 6f3d1fc42..2fd0d738b 100644 --- a/td/telegram/WallpaperManager.h +++ b/td/telegram/WallpaperManager.h @@ -22,7 +22,9 @@ class WallpaperManager : public Actor { public: WallpaperManager(Td *td, ActorShared<> parent); - void get_wallpapers(Promise<> &&promise); + void get_wallpapers(Promise &&promise); + + void reload_wallpapers(Promise &&promise); td_api::object_ptr get_wallpapers_object() const;