Make MessageForwardInfo fields private.

This commit is contained in:
levlam 2024-01-11 20:13:43 +03:00
parent 6b180bcfd9
commit 645102e4ed
4 changed files with 25 additions and 9 deletions

View File

@ -55,6 +55,11 @@ unique_ptr<MessageForwardInfo> MessageForwardInfo::copy_message_forward_info(Td
const MessageForwardInfo &forward_info,
DialogId from_dialog_id,
MessageId from_message_id) {
if (from_dialog_id.is_valid() != from_message_id.is_valid()) {
from_dialog_id = DialogId();
from_message_id = MessageId();
}
auto result = make_unique<MessageForwardInfo>(forward_info);
result->from_dialog_id_ = from_dialog_id;
result->from_message_id_ = from_message_id;

View File

@ -23,7 +23,7 @@ namespace td {
class Dependencies;
class Td;
struct MessageForwardInfo {
class MessageForwardInfo {
MessageOrigin origin_;
int32 date_ = 0;
DialogId from_dialog_id_;
@ -31,6 +31,11 @@ struct MessageForwardInfo {
string psa_type_;
bool is_imported_ = false;
friend bool operator==(const MessageForwardInfo &lhs, const MessageForwardInfo &rhs);
friend StringBuilder &operator<<(StringBuilder &string_builder, const MessageForwardInfo &forward_info);
public:
MessageForwardInfo() = default;
MessageForwardInfo(MessageOrigin &&origin, int32 date, DialogId from_dialog_id, MessageId from_message_id,
@ -73,6 +78,10 @@ struct MessageForwardInfo {
return is_imported_;
}
const MessageOrigin &get_origin() const {
return origin_;
}
MessageFullId get_origin_message_full_id() const {
return origin_.get_message_full_id();
}

View File

@ -9325,7 +9325,7 @@ bool MessagesManager::can_get_message_statistics(DialogId dialog_id, const Messa
return false;
}
if (m == nullptr || m->message_id.is_scheduled() || !m->message_id.is_server() || m->view_count == 0 ||
m->had_forward_info || (m->forward_info != nullptr && m->forward_info->origin_.is_channel_post())) {
m->had_forward_info || (m->forward_info != nullptr && m->forward_info->get_origin().is_channel_post())) {
return false;
}
return td_->contacts_manager_->can_get_channel_message_statistics(dialog_id);
@ -15903,12 +15903,13 @@ void MessagesManager::block_message_sender_from_replies(MessageId message_id, bo
DialogId sender_dialog_id;
if (m->forward_info != nullptr) {
sender_dialog_id = m->forward_info->origin_.get_sender();
sender_dialog_id = m->forward_info->get_origin().get_sender();
}
vector<MessageId> message_ids;
if (need_delete_all_messages && sender_dialog_id.is_valid()) {
message_ids = find_dialog_messages(d, [sender_dialog_id](const Message *m) {
return !m->is_outgoing && m->forward_info != nullptr && m->forward_info->origin_.get_sender() == sender_dialog_id;
return !m->is_outgoing && m->forward_info != nullptr &&
m->forward_info->get_origin().get_sender() == sender_dialog_id;
});
CHECK(td::contains(message_ids, message_id));
} else if (need_delete_message) {
@ -22255,8 +22256,9 @@ tl_object_ptr<td_api::message> MessagesManager::get_message_object(DialogId dial
// in Saved Messages all non-forwarded messages must be outgoing
// a forwarded message is outgoing, only if it doesn't have from_dialog_id and its sender isn't hidden
// i.e. a message is incoming only if it's a forwarded message with known from_dialog_id or with a hidden sender
is_outgoing = is_scheduled || m->forward_info == nullptr ||
(!m->forward_info->get_last_dialog_id().is_valid() && !m->forward_info->origin_.is_sender_hidden());
is_outgoing =
is_scheduled || m->forward_info == nullptr ||
(!m->forward_info->get_last_dialog_id().is_valid() && !m->forward_info->get_origin().is_sender_hidden());
}
double ttl_expires_in = m->ttl_expires_at != 0 ? clamp(m->ttl_expires_at - Time::now(), 1e-3, m->ttl - 1e-3) : 0.0;
@ -24627,7 +24629,7 @@ DialogId MessagesManager::get_message_original_sender(const Message *m) {
if (m->forward_info->is_imported()) {
return DialogId();
}
return m->forward_info->origin_.get_sender();
return m->forward_info->get_origin().get_sender();
}
return get_message_sender(m);
}
@ -25815,7 +25817,7 @@ MessageOrigin MessagesManager::get_forwarded_message_origin(DialogId dialog_id,
CHECK(m != nullptr);
MessageOrigin origin;
if (m->forward_info != nullptr) {
origin = m->forward_info->origin_;
origin = m->forward_info->get_origin();
} else if (m->is_channel_post) {
if (td_->dialog_manager_->is_broadcast_channel(dialog_id)) {
auto author_signature = m->sender_user_id.is_valid() ? td_->contacts_manager_->get_user_title(m->sender_user_id)

View File

@ -107,7 +107,7 @@ class DialogFilter;
class DraftMessage;
struct InputMessageContent;
class MessageContent;
struct MessageForwardInfo;
class MessageForwardInfo;
struct MessageReactions;
class Td;
class Usernames;