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;
|
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;
|
MessageId get_same_chat_reply_to_message_id() const;
|
||||||
|
|
||||||
MessageFullId get_reply_message_full_id(DialogId owner_dialog_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);
|
remove_message_notification_id(d, m, true, true);
|
||||||
update_message_contains_unread_mention(d, m, false, "on_message_ttl_expired_impl");
|
update_message_contains_unread_mention(d, m, false, "on_message_ttl_expired_impl");
|
||||||
remove_message_unread_reactions(d, m, "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->noforwards = false;
|
||||||
m->contains_mention = false;
|
m->contains_mention = false;
|
||||||
m->linked_top_thread_message_id = MessageId();
|
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_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();
|
auto reply_message_id = reply_message_full_id.get_message_id();
|
||||||
if (reply_message_id.is_valid() && reply_message_id.is_yet_unsent()) {
|
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;
|
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);
|
const auto *input_reply_to = get_message_input_reply_to(replied_m);
|
||||||
CHECK(input_reply_to != nullptr);
|
CHECK(input_reply_to != nullptr);
|
||||||
CHECK(input_reply_to->get_reply_message_full_id(reply_d->dialog_id) == MessageFullId(dialog_id, m->message_id));
|
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);
|
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);
|
const auto *input_reply_to = get_message_input_reply_to(replied_m);
|
||||||
CHECK(input_reply_to != nullptr);
|
CHECK(input_reply_to != nullptr);
|
||||||
CHECK(input_reply_to->get_reply_message_full_id(reply_d->dialog_id) == MessageFullId(dialog_id, old_message_id));
|
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);
|
update_message_reply_to_message_id(reply_d, replied_m, new_message_id, true);
|
||||||
// TODO rewrite send message log event
|
|
||||||
}
|
}
|
||||||
if (have_new_message) {
|
if (have_new_message) {
|
||||||
CHECK(!new_message_id.is_yet_unsent());
|
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());
|
const auto *input_reply_to = get_message_input_reply_to(sent_message.get());
|
||||||
if (input_reply_to != nullptr && input_reply_to->is_valid() &&
|
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()) {
|
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;
|
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) {
|
bool is_message_in_dialog) {
|
||||||
LOG(INFO) << "Update replied message of " << MessageFullId{d->dialog_id, m->message_id} << " from "
|
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) {
|
if (is_message_in_dialog) {
|
||||||
unregister_message_reply(d->dialog_id, m);
|
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_story_full_id = StoryFullId();
|
||||||
m->reply_to_random_id = 0;
|
m->reply_to_random_id = 0;
|
||||||
if (reply_to_message_id != MessageId() && m->message_id.is_yet_unsent() &&
|
auto same_chat_reply_to_message_id = input_reply_to.get_same_chat_reply_to_message_id();
|
||||||
(d->dialog_id.get_type() == DialogType::SecretChat || reply_to_message_id.is_yet_unsent())) {
|
if (same_chat_reply_to_message_id != MessageId() && m->message_id.is_yet_unsent() &&
|
||||||
auto *replied_m = get_message(d, reply_to_message_id);
|
(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) {
|
if (replied_m != nullptr) {
|
||||||
m->reply_to_random_id = replied_m->random_id;
|
m->reply_to_random_id = replied_m->random_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!m->message_id.is_server()) {
|
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) {
|
if (is_message_in_dialog) {
|
||||||
register_message_reply(d->dialog_id, m);
|
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);
|
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) {
|
void MessagesManager::restore_message_reply_to_message_id(Dialog *d, Message *m) {
|
||||||
const auto *input_reply_to = get_message_input_reply_to(m);
|
const auto *input_reply_to = get_message_input_reply_to(m);
|
||||||
CHECK(input_reply_to != nullptr);
|
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()) {
|
if (replied_message_id == MessageId() || !replied_message_id.is_yet_unsent()) {
|
||||||
return;
|
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 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 =
|
if (message_id.is_valid() || message_id.is_valid_scheduled()) {
|
||||||
message_id.is_valid() || message_id.is_valid_scheduled() ? message_id : m->top_thread_message_id;
|
update_message_reply_to_message_id(d, m, message_id, false);
|
||||||
set_message_reply(d, m, new_reply_to_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,
|
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 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);
|
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,
|
td_api::object_ptr<td_api::messageReplyToMessage> get_message_reply_to_message_object(Td *td,
|
||||||
DialogId dialog_id) const;
|
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;
|
MessageId get_same_chat_reply_to_message_id() const;
|
||||||
|
|
||||||
MessageFullId get_reply_message_full_id(DialogId owner_dialog_id) const;
|
MessageFullId get_reply_message_full_id(DialogId owner_dialog_id) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user