diff options
| author | levlam <levlam@telegram.org> | 2026-06-24 19:16:57 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-06-24 19:16:57 +0300 |
| commit | ad6ab3d0ec0b13102346ca1208a1eaa72a5db18b (patch) | |
| tree | 1c435cf195e2901e4b27844de880d12837fea418 | |
| parent | b78c541f1d12288fead849720fdeeef9f6ebb38f (diff) | |
Register channel direct messages draft files.
| -rw-r--r-- | td/telegram/SavedMessagesManager.cpp | 19 | ||||
| -rw-r--r-- | td/telegram/SavedMessagesManager.h | 4 |
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); |
