diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 490d9d9..b6e3bca 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -2556,6 +2556,44 @@ class Client::TdOnCheckChatCallback : public TdQueryCallback { OnSuccess on_success_; }; +template +class Client::TdOnDisableInternetConnectionCallback : public TdQueryCallback { + public: + TdOnDisableInternetConnectionCallback(const Client *client, PromisedQueryPtr query, OnSuccess on_success) + : client_(client) + , query_(std::move(query)) + , on_success_(std::move(on_success)) { + } + + void on_result(object_ptr result) override { + on_success_(std::move(query_)); + } + + private: + const Client *client_; + PromisedQueryPtr query_; + OnSuccess on_success_; +}; + +template +class Client::TdOnOptimizeMemoryCallback : public TdQueryCallback { + public: + TdOnOptimizeMemoryCallback(const Client *client, PromisedQueryPtr query, OnSuccess on_success) + : client_(client) + , query_(std::move(query)) + , on_success_(std::move(on_success)) { + } + + void on_result(object_ptr result) override { + on_success_(std::move(query_)); + } + + private: + const Client *client_; + PromisedQueryPtr query_; + OnSuccess on_success_; +}; + template class Client::TdOnSearchStickerSetCallback : public TdQueryCallback { public: @@ -6904,10 +6942,30 @@ td::Status Client::process_get_chat_member_count_query(PromisedQueryPtr &query) } td::Status Client::process_optimize_memory_query(PromisedQueryPtr &query) { - send_request(make_object(), std::make_unique(std::move(query))); + disable_internet_connection(std::move(query), [this](PromisedQueryPtr query) { + optimize_memory(std::move(query), [this](PromisedQueryPtr query) { + enable_internet_connection(std::move(query)); + }); + }); return Status::OK(); } +template +void Client::disable_internet_connection(PromisedQueryPtr query, OnSuccess on_success) { + send_request(make_object(make_object()), + std::make_unique>(this, std::move(query), std::move(on_success))); +} + +void Client::enable_internet_connection(PromisedQueryPtr query) { + send_request(make_object(make_object()), std::make_unique(std::move(query))); +} + +template +void Client::optimize_memory(PromisedQueryPtr query, OnSuccess on_success) { + send_request(make_object(), + std::make_unique>(this, std::move(query), std::move(on_success))); +} + td::Status Client::process_leave_chat_query(PromisedQueryPtr &query) { auto chat_id = query->arg("chat_id"); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 9ccf10d..22716bc 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -212,6 +212,12 @@ class Client : public WebhookActor::Callback { template class TdOnCheckChatCallback; template + class TdOnEnableInternetConnectionCallback; + template + class TdOnOptimizeMemoryCallback; + template + class TdOnDisableInternetConnectionCallback; + template class TdOnCheckMessageCallback; template class TdOnCheckRemoteFileIdCallback; @@ -239,6 +245,14 @@ class Client : public WebhookActor::Callback { template void check_chat(Slice chat_id_str, AccessRights access_rights, PromisedQueryPtr query, OnSuccess on_success); + template + void disable_internet_connection(PromisedQueryPtr query, OnSuccess on_success); + + template + void optimize_memory(PromisedQueryPtr query, OnSuccess on_success); + + void enable_internet_connection(PromisedQueryPtr query); + template void check_remote_file_id(td::string file_id, PromisedQueryPtr query, OnSuccess on_success);