Add separate header for MessagesInfo.

This commit is contained in:
levlam 2022-12-07 19:28:27 +03:00
parent 2e139cc895
commit 75453b542f
4 changed files with 38 additions and 21 deletions

View File

@ -630,6 +630,7 @@ set(TDLIB_SOURCE
td/telegram/MessageReplyInfo.h
td/telegram/MessageSearchFilter.h
td/telegram/MessageSender.h
td/telegram/MessagesInfo.h
td/telegram/MessagesManager.h
td/telegram/MessageThreadDb.h
td/telegram/MessageThreadInfo.h

View File

@ -0,0 +1,21 @@
//
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#pragma once
#include "td/telegram/telegram_api.h"
#include "td/utils/common.h"
namespace td {
struct MessagesInfo {
vector<telegram_api::object_ptr<telegram_api::Message>> messages;
int32 total_count = 0;
bool is_channel_messages = false;
};
} // namespace td

View File

@ -531,7 +531,7 @@ class GetChannelMessagesQuery final : public Td::ResultHandler {
td_->messages_manager_->get_channel_difference_if_needed(
DialogId(channel_id_), std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), source,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2122,7 +2122,7 @@ class GetDialogMessageByDateQuery final : public Td::ResultHandler {
dialog_id_, std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), dialog_id = dialog_id_, date = date_,
random_id = random_id_,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2200,7 +2200,7 @@ class GetHistoryQuery final : public Td::ResultHandler {
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), dialog_id = dialog_id_,
from_message_id = from_message_id_, old_last_new_message_id = old_last_new_message_id_,
offset = offset_, limit = limit_, from_the_end = from_the_end_,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2371,7 +2371,7 @@ class GetSearchResultCalendarQuery final : public Td::ResultHandler {
// unused: inexact:flags.0?true min_date:int min_msg_id:int offset_id_offset:flags.1?int
MessagesManager::MessagesInfo info;
MessagesInfo info;
info.messages = std::move(result->messages_);
info.total_count = result->count_;
info.is_channel_messages = dialog_id_.get_type() == DialogType::Channel;
@ -2381,7 +2381,7 @@ class GetSearchResultCalendarQuery final : public Td::ResultHandler {
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), dialog_id = dialog_id_,
from_message_id = from_message_id_, filter = filter_, random_id = random_id_,
periods = std::move(result->periods_),
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2588,7 +2588,7 @@ class SearchMessagesQuery final : public Td::ResultHandler {
query = std::move(query_), sender_dialog_id = sender_dialog_id_,
from_message_id = from_message_id_, offset = offset_, limit = limit_, filter = filter_,
top_thread_message_id = top_thread_message_id_, random_id = random_id_,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2755,7 +2755,7 @@ class SearchMessagesGlobalQuery final : public Td::ResultHandler {
offset_date = offset_date_, offset_dialog_id = offset_dialog_id_,
offset_message_id = offset_message_id_, limit = limit_, filter = std::move(filter_),
min_date = min_date_, max_date = max_date_, random_id = random_id_,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2838,9 +2838,8 @@ class SearchSentMediaQuery final : public Td::ResultHandler {
auto info = td_->messages_manager_->get_messages_info(DialogId(), result_ptr.move_as_ok(), "SearchSentMediaQuery");
td_->messages_manager_->get_channel_differences_if_needed(
std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(),
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
std::move(info), PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(),
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2890,7 +2889,7 @@ class GetRecentLocationsQuery final : public Td::ResultHandler {
td_->messages_manager_->get_channel_difference_if_needed(
dialog_id_, std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(), dialog_id = dialog_id_, limit = limit_,
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -2942,9 +2941,8 @@ class GetMessagePublicForwardsQuery final : public Td::ResultHandler {
auto info =
td_->messages_manager_->get_messages_info(DialogId(), result_ptr.move_as_ok(), "GetMessagePublicForwardsQuery");
td_->messages_manager_->get_channel_differences_if_needed(
std::move(info),
PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(),
promise = std::move(promise_)](Result<MessagesManager::MessagesInfo> &&result) mutable {
std::move(info), PromiseCreator::lambda([actor_id = td_->messages_manager_actor_.get(),
promise = std::move(promise_)](Result<MessagesInfo> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
@ -9800,8 +9798,9 @@ void MessagesManager::on_get_empty_messages(DialogId dialog_id, const vector<Mes
}
}
MessagesManager::MessagesInfo MessagesManager::get_messages_info(
DialogId dialog_id, tl_object_ptr<telegram_api::messages_Messages> &&messages_ptr, const char *source) {
MessagesInfo MessagesManager::get_messages_info(DialogId dialog_id,
tl_object_ptr<telegram_api::messages_Messages> &&messages_ptr,
const char *source) {
CHECK(messages_ptr != nullptr);
LOG(DEBUG) << "Receive result for " << source << ": " << to_string(messages_ptr);

View File

@ -37,6 +37,7 @@
#include "td/telegram/MessageReplyHeader.h"
#include "td/telegram/MessageReplyInfo.h"
#include "td/telegram/MessageSearchFilter.h"
#include "td/telegram/MessagesInfo.h"
#include "td/telegram/MessageThreadInfo.h"
#include "td/telegram/MessageTtl.h"
#include "td/telegram/net/DcId.h"
@ -195,11 +196,6 @@ class MessagesManager final : public Actor {
void on_get_empty_messages(DialogId dialog_id, const vector<MessageId> &empty_message_ids);
struct MessagesInfo {
vector<tl_object_ptr<telegram_api::Message>> messages;
int32 total_count = 0;
bool is_channel_messages = false;
};
MessagesInfo get_messages_info(DialogId dialog_id, tl_object_ptr<telegram_api::messages_Messages> &&messages_ptr,
const char *source);