aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-24 19:16:57 +0300
committerlevlam <levlam@telegram.org>2026-06-24 19:16:57 +0300
commitad6ab3d0ec0b13102346ca1208a1eaa72a5db18b (patch)
tree1c435cf195e2901e4b27844de880d12837fea418
parentb78c541f1d12288fead849720fdeeef9f6ebb38f (diff)
Register channel direct messages draft files.
-rw-r--r--td/telegram/SavedMessagesManager.cpp19
-rw-r--r--td/telegram/SavedMessagesManager.h4
2 files changed, 15 insertions, 8 deletions
diff --git a/td/telegram/SavedMessagesManager.cpp b/td/telegram/SavedMessagesManager.cpp
index fa046f93a..3e3e3e7fb 100644
--- a/td/telegram/SavedMessagesManager.cpp
+++ b/td/telegram/SavedMessagesManager.cpp
@@ -799,7 +799,8 @@ void SavedMessagesManager::do_set_topic_unread_reaction_count(SavedMessagesTopic
}
void SavedMessagesManager::do_set_topic_draft_message(SavedMessagesTopic *topic,
- unique_ptr<DraftMessage> &&draft_message, bool from_update) {
+ unique_ptr<DraftMessage> &&draft_message, bool from_update,
+ bool need_delete_files) {
if (td_->auth_manager_->is_bot()) {
return;
}
@@ -808,8 +809,14 @@ void SavedMessagesManager::do_set_topic_draft_message(SavedMessagesTopic *topic,
return;
}
+ auto old_file_ids = get_draft_message_file_ids(td_, topic->draft_message_);
topic->draft_message_ = std::move(draft_message);
topic->is_changed_ = true;
+ if (topic->dialog_id_ != DialogId()) {
+ td_->draft_message_manager_->change_draft_message_files(
+ topic->dialog_id_, MessageTopic::monoforum(topic->dialog_id_, topic->saved_messages_topic_id_), old_file_ids,
+ get_draft_message_file_ids(td_, topic->draft_message_), need_delete_files);
+ }
}
void SavedMessagesManager::on_topic_message_added(DialogId dialog_id, SavedMessagesTopicId saved_messages_topic_id,
@@ -962,7 +969,7 @@ void SavedMessagesManager::on_all_dialog_messages_deleted(DialogId dialog_id) {
do_set_topic_is_marked_as_unread(topic, false);
do_set_topic_unread_reaction_count(topic, 0);
// do_set_topic_reply_markup(topic, MessageId());
- do_set_topic_draft_message(topic, nullptr, false);
+ do_set_topic_draft_message(topic, nullptr, false, true);
topic->pinned_order_ = 0;
on_topic_changed(topic_list, topic, "on_all_dialog_messages_deleted");
}
@@ -1030,7 +1037,7 @@ void SavedMessagesManager::clear_monoforum_topic_draft_by_sent_message(DialogId
return;
}
}
- do_set_topic_draft_message(topic, nullptr, false);
+ do_set_topic_draft_message(topic, nullptr, false, false);
on_topic_changed(topic_list, topic, "clear_monoforum_topic_draft_by_sent_message");
}
@@ -1238,7 +1245,7 @@ void SavedMessagesManager::on_update_topic_draft_message(
}
}
- do_set_topic_draft_message(topic, get_draft_message(td_, std::move(draft_message)), true);
+ do_set_topic_draft_message(topic, get_draft_message(td_, std::move(draft_message)), true, true);
on_topic_changed(topic_list, topic, "on_update_topic_draft_message");
}
@@ -1764,7 +1771,7 @@ void SavedMessagesManager::process_saved_messages_topics(
do_set_topic_unread_reaction_count(topic, topic_info.unread_reaction_count_);
do_set_topic_is_marked_as_unread(topic, topic_info.is_marked_as_unread_);
do_set_topic_nopaid_messages_exception(topic, topic_info.nopaid_messages_exception_);
- do_set_topic_draft_message(topic, std::move(topic_info.draft_message_), true);
+ do_set_topic_draft_message(topic, std::move(topic_info.draft_message_), true, true);
}
on_topic_changed(topic_list, topic, "on_get_saved_messages_topics");
}
@@ -2466,7 +2473,7 @@ Status SavedMessagesManager::set_monoforum_topic_draft_message(DialogId dialog_i
return Status::Error(400, "Topic can't have draft");
}
- do_set_topic_draft_message(topic, std::move(draft_message), false);
+ do_set_topic_draft_message(topic, std::move(draft_message), false, true);
if (topic->is_changed_) {
td_->draft_message_manager_->save_draft_message(
diff --git a/td/telegram/SavedMessagesManager.h b/td/telegram/SavedMessagesManager.h
index fc2cb3ae1..8006ea2ff 100644
--- a/td/telegram/SavedMessagesManager.h
+++ b/td/telegram/SavedMessagesManager.h
@@ -319,8 +319,8 @@ class SavedMessagesManager final : public Actor {
void do_set_topic_unread_reaction_count(SavedMessagesTopic *topic, int32 unread_reaction_count);
- void do_set_topic_draft_message(SavedMessagesTopic *topic, unique_ptr<DraftMessage> &&draft_message,
- bool from_update);
+ void do_set_topic_draft_message(SavedMessagesTopic *topic, unique_ptr<DraftMessage> &&draft_message, bool from_update,
+ bool need_delete_files);
void load_topics(TopicList *topic_list, int32 limit, Promise<Unit> &&promise);