Skip to content

Commit 6a8265f

Browse files
committed
Improve RepliedMessageInfo for replies to ephemeral messages.
1 parent 9bf3452 commit 6a8265f

3 files changed

Lines changed: 12 additions & 7 deletions

File tree

td/telegram/MessagesManager.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20887,7 +20887,7 @@ unique_ptr<MessagesManager::Message> MessagesManager::create_message_to_send(
2088720887
m->send_date = G()->unix_time();
2088820888
m->date = is_scheduled ? options.schedule_date : m->send_date;
2088920889
m->schedule_repeat_period = options.schedule_repeat_period;
20890-
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, message_topic);
20890+
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, dialog_id, message_topic);
2089120891
m->reply_to_story_full_id = input_reply_to.get_story_full_id();
2089220892
m->input_reply_to = std::move(input_reply_to);
2089320893
m->reply_to_random_id = reply_to_random_id;
@@ -25405,7 +25405,7 @@ Result<MessageId> MessagesManager::add_local_message(
2540525405
m->sender_user_id = sender_user_id;
2540625406
m->sender_dialog_id = sender_dialog_id;
2540725407
m->date = G()->unix_time();
25408-
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, MessageTopic());
25408+
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, dialog_id, MessageTopic());
2540925409
m->reply_to_story_full_id = input_reply_to.get_story_full_id();
2541025410
if (!message_id.is_scheduled()) {
2541125411
auto reply_to_message_id = input_reply_to.get_same_chat_reply_to_message_id();
@@ -27637,13 +27637,13 @@ void MessagesManager::check_send_message_result(int64 random_id, DialogId dialog
2763727637

2763827638
void MessagesManager::update_reply_to_message_id(DialogId dialog_id, MessageId old_message_id, MessageId new_message_id,
2763927639
bool have_new_message, const char *source) {
27640-
LOG(DEBUG) << "Update replies of " << MessageFullId{dialog_id, old_message_id} << " to " << new_message_id << " from "
27641-
<< source;
2764227640
MessageFullId old_message_full_id(dialog_id, old_message_id);
2764327641
auto it = replied_yet_unsent_messages_.find(old_message_full_id);
2764427642
if (it == replied_yet_unsent_messages_.end()) {
2764527643
return;
2764627644
}
27645+
LOG(DEBUG) << "Update replies to " << MessageFullId{dialog_id, old_message_id} << " to its new " << new_message_id
27646+
<< " from " << source;
2764727647
CHECK(old_message_id.is_yet_unsent());
2764827648
CHECK(new_message_id == MessageId() || new_message_id.is_valid() || new_message_id.is_valid_scheduled());
2764927649

@@ -35653,7 +35653,7 @@ void MessagesManager::set_message_reply(const Dialog *d, Message *m, MessageInpu
3565335653
if (is_message_in_dialog) {
3565435654
unregister_message_reply(d->dialog_id, m);
3565535655
}
35656-
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, get_message_topic(d->dialog_id, m));
35656+
m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, d->dialog_id, get_message_topic(d->dialog_id, m));
3565735657
m->reply_to_story_full_id = StoryFullId();
3565835658
m->reply_to_random_id = get_message_reply_to_random_id(d, m);
3565935659
if (!m->message_id.is_any_server()) {

td/telegram/RepliedMessageInfo.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,13 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa
139139
}
140140
}
141141

142-
RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, const MessageTopic &topic) {
142+
RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, DialogId dialog_id,
143+
const MessageTopic &topic) {
143144
if (!input_reply_to.message_id_.is_valid() && !input_reply_to.message_id_.is_valid_scheduled()) {
145+
if (input_reply_to.ephemeral_message_id_.is_valid()) {
146+
message_id_ = td->messages_manager_->get_message_id_of_ephemeral_message_id(dialog_id,
147+
input_reply_to.ephemeral_message_id_);
148+
}
144149
return;
145150
}
146151
message_id_ = input_reply_to.message_id_;

td/telegram/RepliedMessageInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class RepliedMessageInfo {
6262
RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messageReplyHeader> &&reply_header, DialogId dialog_id,
6363
MessageId message_id, int32 date);
6464

65-
RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, const MessageTopic &topic);
65+
RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, DialogId dialog_id, const MessageTopic &topic);
6666

6767
RepliedMessageInfo clone(Td *td) const;
6868

0 commit comments

Comments
 (0)