Return new message from add_message.

main
levlam 2 months ago
parent e8549f0f34
commit 673d173bd8

@ -6630,10 +6630,10 @@ class Client::TdOnCheckMessageCallback final : public TdQueryCallback {
} }
CHECK(result->get_id() == td_api::message::ID); CHECK(result->get_id() == td_api::message::ID);
auto message_full_id = client_->add_message(move_object_as<td_api::message>(result)); const auto *message_info = client_->add_message(move_object_as<td_api::message>(result));
CHECK(message_full_id.chat_id == chat_id_); CHECK(message_info->chat_id == chat_id_);
CHECK(message_full_id.message_id == message_id_); CHECK(message_info->id == message_id_);
on_success_(message_full_id.chat_id, message_full_id.message_id, std::move(query_)); on_success_(chat_id_, message_id_, std::move(query_));
} }
private: private:
@ -6681,9 +6681,9 @@ class Client::TdOnCheckMessagesCallback final : public TdQueryCallback {
} }
continue; continue;
} }
auto message_full_id = client_->add_message(std::move(message)); const auto *message_info = client_->add_message(std::move(message));
CHECK(message_full_id.chat_id == chat_id_); CHECK(message_info->chat_id == chat_id_);
message_ids.push_back(message_full_id.message_id); message_ids.push_back(message_info->id);
} }
on_success_(chat_id_, std::move(message_ids), std::move(query_)); on_success_(chat_id_, std::move(message_ids), std::move(query_));
} }
@ -6945,13 +6945,10 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback {
} }
} else { } else {
CHECK(result->get_id() == td_api::message::ID); CHECK(result->get_id() == td_api::message::ID);
auto message_full_id = client_->add_message(move_object_as<td_api::message>(result)); const auto *message_info = client_->add_message(move_object_as<td_api::message>(result));
pinned_message_id = message_full_id.message_id; pinned_message_id = message_info->id;
CHECK(message_full_id.chat_id == chat_id_); CHECK(message_info->chat_id == chat_id_);
CHECK(pinned_message_id > 0); td::append(sticker_set_ids, get_message_sticker_set_ids(message_info));
auto pinned_message_info = client_->get_message(chat_id_, pinned_message_id, true);
CHECK(pinned_message_info != nullptr);
sticker_set_ids = get_message_sticker_set_ids(pinned_message_info);
} }
auto chat_info = client_->get_chat(chat_id_); auto chat_info = client_->get_chat(chat_id_);
@ -6990,7 +6987,6 @@ class Client::TdOnGetChatPinnedMessageToUnpinCallback final : public TdQueryCall
} }
void on_result(object_ptr<td_api::Object> result) final { void on_result(object_ptr<td_api::Object> result) final {
int64 pinned_message_id = 0;
if (result->get_id() == td_api::error::ID) { if (result->get_id() == td_api::error::ID) {
auto error = move_object_as<td_api::error>(result); auto error = move_object_as<td_api::error>(result);
if (is_special_error_code(error->code_)) { if (is_special_error_code(error->code_)) {
@ -7001,12 +6997,9 @@ class Client::TdOnGetChatPinnedMessageToUnpinCallback final : public TdQueryCall
} }
CHECK(result->get_id() == td_api::message::ID); CHECK(result->get_id() == td_api::message::ID);
auto message_full_id = client_->add_message(move_object_as<td_api::message>(result)); const auto *message_info = client_->add_message(move_object_as<td_api::message>(result));
pinned_message_id = message_full_id.message_id; CHECK(message_info->chat_id == chat_id_);
CHECK(message_full_id.chat_id == chat_id_); client_->send_request(make_object<td_api::unpinChatMessage>(chat_id_, message_info->id),
CHECK(pinned_message_id > 0);
client_->send_request(make_object<td_api::unpinChatMessage>(chat_id_, pinned_message_id),
td::make_unique<TdOnOkQueryCallback>(std::move(query_))); td::make_unique<TdOnOkQueryCallback>(std::move(query_)));
} }
@ -12306,14 +12299,11 @@ td::int64 Client::extract_yet_unsent_message_query_id(int64 chat_id, int64 messa
} }
void Client::on_message_send_succeeded(object_ptr<td_api::message> &&message, int64 old_message_id) { void Client::on_message_send_succeeded(object_ptr<td_api::message> &&message, int64 old_message_id) {
auto message_full_id = add_message(std::move(message), true); const auto *message_info = add_message(std::move(message), true);
int64 chat_id = message_info->chat_id;
int64 chat_id = message_full_id.chat_id; int64 new_message_id = message_info->id;
int64 new_message_id = message_full_id.message_id;
CHECK(new_message_id > 0); CHECK(new_message_id > 0);
auto message_info = get_message(chat_id, new_message_id, true);
CHECK(message_info != nullptr);
message_info->is_content_changed = false; message_info->is_content_changed = false;
auto query_id = extract_yet_unsent_message_query_id(chat_id, old_message_id); auto query_id = extract_yet_unsent_message_query_id(chat_id, old_message_id);
@ -17533,10 +17523,7 @@ void Client::process_new_message_queue(int64 chat_id, int state) {
delayed_update_count_++; delayed_update_count_++;
} }
auto left_time = message_date + 86400 - now; auto left_time = message_date + 86400 - now;
add_message(std::move(message)); const auto *message_info = add_message(std::move(message));
auto message_info = get_message(chat_id, message_id, true);
CHECK(message_info != nullptr);
message_info->is_content_changed = false; message_info->is_content_changed = false;
add_update(update_type, JsonMessage(message_info, true, get_update_type_name(update_type).str(), this), left_time, add_update(update_type, JsonMessage(message_info, true, get_update_type_name(update_type).str(), this), left_time,
@ -17628,7 +17615,7 @@ td::unique_ptr<Client::MessageInfo> Client::delete_message(int64 chat_id, int64
return message_info; return message_info;
} }
Client::MessageFullId Client::add_message(object_ptr<td_api::message> &&message, bool force_update_content) { const Client::MessageInfo *Client::add_message(object_ptr<td_api::message> &&message, bool force_update_content) {
CHECK(message != nullptr); CHECK(message != nullptr);
CHECK(message->sending_state_ == nullptr); CHECK(message->sending_state_ == nullptr);
@ -17643,7 +17630,7 @@ Client::MessageFullId Client::add_message(object_ptr<td_api::message> &&message,
init_message(message_info.get(), std::move(message), force_update_content); init_message(message_info.get(), std::move(message), force_update_content);
return {chat_id, message_id}; return message_info.get();
} }
void Client::init_message(MessageInfo *message_info, object_ptr<td_api::message> &&message, bool force_update_content) { void Client::init_message(MessageInfo *message_info, object_ptr<td_api::message> &&message, bool force_update_content) {

@ -1256,7 +1256,7 @@ class Client final : public WebhookActor::Callback {
} }
}; };
MessageFullId add_message(object_ptr<td_api::message> &&message, bool force_update_content = false); const MessageInfo *add_message(object_ptr<td_api::message> &&message, bool force_update_content = false);
void init_message(MessageInfo *message_info, object_ptr<td_api::message> &&message, bool force_update_content); void init_message(MessageInfo *message_info, object_ptr<td_api::message> &&message, bool force_update_content);

Loading…
Cancel
Save