Pass MessageInputReplyTo to set_message_reply.
This commit is contained in:
parent
ec231f0c99
commit
012211ea19
@ -70,6 +70,11 @@ class MessageInputReplyTo {
|
||||
|
||||
td_api::object_ptr<td_api::InputMessageReplyTo> get_input_message_reply_to_object(Td *td, DialogId dialog_id) const;
|
||||
|
||||
void set_message_id(MessageId new_message_id) {
|
||||
CHECK(message_id_.is_valid() || message_id_.is_valid_scheduled());
|
||||
message_id_ = new_message_id;
|
||||
}
|
||||
|
||||
MessageId get_same_chat_reply_to_message_id() const;
|
||||
|
||||
MessageFullId get_reply_message_full_id(DialogId owner_dialog_id) const;
|
||||
|
@ -13378,7 +13378,7 @@ void MessagesManager::on_message_ttl_expired_impl(Dialog *d, Message *m, bool is
|
||||
remove_message_notification_id(d, m, true, true);
|
||||
update_message_contains_unread_mention(d, m, false, "on_message_ttl_expired_impl");
|
||||
remove_message_unread_reactions(d, m, "on_message_ttl_expired_impl");
|
||||
set_message_reply(d, m, MessageId(), is_message_in_dialog);
|
||||
set_message_reply(d, m, MessageInputReplyTo(), is_message_in_dialog);
|
||||
m->noforwards = false;
|
||||
m->contains_mention = false;
|
||||
m->linked_top_thread_message_id = MessageId();
|
||||
@ -14775,7 +14775,7 @@ MessageFullId MessagesManager::on_get_message(MessageInfo &&message_info, const
|
||||
auto reply_message_full_id = new_message->replied_message_info.get_reply_message_full_id(dialog_id);
|
||||
auto reply_message_id = reply_message_full_id.get_message_id();
|
||||
if (reply_message_id.is_valid() && reply_message_id.is_yet_unsent()) {
|
||||
set_message_reply(d, new_message.get(), MessageId(), false);
|
||||
set_message_reply(d, new_message.get(), MessageInputReplyTo(), false);
|
||||
}
|
||||
|
||||
new_message->message_id = message_id;
|
||||
@ -24653,7 +24653,8 @@ void MessagesManager::cancel_send_message_query(DialogId dialog_id, Message *m)
|
||||
const auto *input_reply_to = get_message_input_reply_to(replied_m);
|
||||
CHECK(input_reply_to != nullptr);
|
||||
CHECK(input_reply_to->get_reply_message_full_id(reply_d->dialog_id) == MessageFullId(dialog_id, m->message_id));
|
||||
set_message_reply(reply_d, replied_m, replied_m->top_thread_message_id, true);
|
||||
set_message_reply(reply_d, replied_m, MessageInputReplyTo{replied_m->top_thread_message_id, FormattedText()},
|
||||
true);
|
||||
}
|
||||
replied_yet_unsent_messages_.erase(it);
|
||||
}
|
||||
@ -30764,8 +30765,7 @@ void MessagesManager::update_reply_to_message_id(DialogId dialog_id, MessageId o
|
||||
const auto *input_reply_to = get_message_input_reply_to(replied_m);
|
||||
CHECK(input_reply_to != nullptr);
|
||||
CHECK(input_reply_to->get_reply_message_full_id(reply_d->dialog_id) == MessageFullId(dialog_id, old_message_id));
|
||||
set_message_reply(reply_d, replied_m, new_message_id, true);
|
||||
// TODO rewrite send message log event
|
||||
update_message_reply_to_message_id(reply_d, replied_m, new_message_id, true);
|
||||
}
|
||||
if (have_new_message) {
|
||||
CHECK(!new_message_id.is_yet_unsent());
|
||||
@ -30854,7 +30854,7 @@ MessageFullId MessagesManager::on_send_message_success(int64 random_id, MessageI
|
||||
const auto *input_reply_to = get_message_input_reply_to(sent_message.get());
|
||||
if (input_reply_to != nullptr && input_reply_to->is_valid() &&
|
||||
input_reply_to->get_reply_message_full_id(dialog_id).get_message_id().is_yet_unsent()) {
|
||||
set_message_reply(d, sent_message.get(), MessageId(), false);
|
||||
set_message_reply(d, sent_message.get(), MessageInputReplyTo(), false);
|
||||
}
|
||||
|
||||
sent_message->message_id = new_message_id;
|
||||
@ -39151,25 +39151,26 @@ void MessagesManager::update_has_outgoing_messages(DialogId dialog_id, const Mes
|
||||
}
|
||||
}
|
||||
|
||||
void MessagesManager::set_message_reply(const Dialog *d, Message *m, MessageId reply_to_message_id,
|
||||
void MessagesManager::set_message_reply(const Dialog *d, Message *m, MessageInputReplyTo input_reply_to,
|
||||
bool is_message_in_dialog) {
|
||||
LOG(INFO) << "Update replied message of " << MessageFullId{d->dialog_id, m->message_id} << " from "
|
||||
<< m->replied_message_info << " to " << reply_to_message_id;
|
||||
<< m->replied_message_info << " to " << input_reply_to;
|
||||
if (is_message_in_dialog) {
|
||||
unregister_message_reply(d->dialog_id, m);
|
||||
}
|
||||
m->replied_message_info = RepliedMessageInfo(reply_to_message_id);
|
||||
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to);
|
||||
m->reply_to_story_full_id = StoryFullId();
|
||||
m->reply_to_random_id = 0;
|
||||
if (reply_to_message_id != MessageId() && m->message_id.is_yet_unsent() &&
|
||||
(d->dialog_id.get_type() == DialogType::SecretChat || reply_to_message_id.is_yet_unsent())) {
|
||||
auto *replied_m = get_message(d, reply_to_message_id);
|
||||
auto same_chat_reply_to_message_id = input_reply_to.get_same_chat_reply_to_message_id();
|
||||
if (same_chat_reply_to_message_id != MessageId() && m->message_id.is_yet_unsent() &&
|
||||
(d->dialog_id.get_type() == DialogType::SecretChat || same_chat_reply_to_message_id.is_yet_unsent())) {
|
||||
auto *replied_m = get_message(d, same_chat_reply_to_message_id);
|
||||
if (replied_m != nullptr) {
|
||||
m->reply_to_random_id = replied_m->random_id;
|
||||
}
|
||||
}
|
||||
if (!m->message_id.is_server()) {
|
||||
m->input_reply_to = MessageInputReplyTo{reply_to_message_id, FormattedText()};
|
||||
m->input_reply_to = std::move(input_reply_to);
|
||||
}
|
||||
if (is_message_in_dialog) {
|
||||
register_message_reply(d->dialog_id, m);
|
||||
@ -39177,6 +39178,22 @@ void MessagesManager::set_message_reply(const Dialog *d, Message *m, MessageId r
|
||||
update_message_max_reply_media_timestamp(d, m, is_message_in_dialog);
|
||||
}
|
||||
|
||||
void MessagesManager::update_message_reply_to_message_id(const Dialog *d, Message *m, MessageId reply_to_message_id,
|
||||
bool is_message_in_dialog) {
|
||||
LOG(INFO) << "Update identifier of replied message of " << MessageFullId{d->dialog_id, m->message_id} << " from "
|
||||
<< m->replied_message_info << " to " << reply_to_message_id;
|
||||
if (is_message_in_dialog) {
|
||||
unregister_message_reply(d->dialog_id, m);
|
||||
}
|
||||
m->replied_message_info.set_message_id(reply_to_message_id);
|
||||
if (!m->message_id.is_server()) {
|
||||
m->input_reply_to.set_message_id(reply_to_message_id);
|
||||
}
|
||||
if (is_message_in_dialog) {
|
||||
register_message_reply(d->dialog_id, m);
|
||||
}
|
||||
}
|
||||
|
||||
void MessagesManager::restore_message_reply_to_message_id(Dialog *d, Message *m) {
|
||||
const auto *input_reply_to = get_message_input_reply_to(m);
|
||||
CHECK(input_reply_to != nullptr);
|
||||
@ -39188,11 +39205,14 @@ void MessagesManager::restore_message_reply_to_message_id(Dialog *d, Message *m)
|
||||
if (replied_message_id == MessageId() || !replied_message_id.is_yet_unsent()) {
|
||||
return;
|
||||
}
|
||||
CHECK(replied_message_full_id.get_dialog_id() == d->dialog_id);
|
||||
|
||||
auto message_id = get_message_id_by_random_id(d, m->reply_to_random_id, "restore_message_reply_to_message_id");
|
||||
auto new_reply_to_message_id =
|
||||
message_id.is_valid() || message_id.is_valid_scheduled() ? message_id : m->top_thread_message_id;
|
||||
set_message_reply(d, m, new_reply_to_message_id, false);
|
||||
if (message_id.is_valid() || message_id.is_valid_scheduled()) {
|
||||
update_message_reply_to_message_id(d, m, message_id, false);
|
||||
} else {
|
||||
set_message_reply(d, m, MessageInputReplyTo(m->top_thread_message_id, FormattedText()), false);
|
||||
}
|
||||
}
|
||||
|
||||
MessagesManager::Message *MessagesManager::continue_send_message(DialogId dialog_id, unique_ptr<Message> &&message,
|
||||
|
@ -1969,7 +1969,10 @@ class MessagesManager final : public Actor {
|
||||
|
||||
void do_send_screenshot_taken_notification_message(DialogId dialog_id, const Message *m, uint64 log_event_id);
|
||||
|
||||
void set_message_reply(const Dialog *d, Message *m, MessageId reply_to_message_id, bool is_message_in_dialog);
|
||||
void set_message_reply(const Dialog *d, Message *m, MessageInputReplyTo input_reply_to, bool is_message_in_dialog);
|
||||
|
||||
void update_message_reply_to_message_id(const Dialog *d, Message *m, MessageId reply_to_message_id,
|
||||
bool is_message_in_dialog);
|
||||
|
||||
void restore_message_reply_to_message_id(Dialog *d, Message *m);
|
||||
|
||||
|
@ -87,6 +87,11 @@ class RepliedMessageInfo {
|
||||
td_api::object_ptr<td_api::messageReplyToMessage> get_message_reply_to_message_object(Td *td,
|
||||
DialogId dialog_id) const;
|
||||
|
||||
void set_message_id(MessageId new_message_id) {
|
||||
CHECK(message_id_.is_valid() || message_id_.is_valid_scheduled());
|
||||
message_id_ = new_message_id;
|
||||
}
|
||||
|
||||
MessageId get_same_chat_reply_to_message_id() const;
|
||||
|
||||
MessageFullId get_reply_message_full_id(DialogId owner_dialog_id) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user