aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-23 23:16:59 +0300
committerlevlam <levlam@telegram.org>2026-06-23 23:16:59 +0300
commit7cd1c3b36e762d34831af7080cb226d954e3ff57 (patch)
treec3db315e70e997cd692a6f780a4d964f81c80ff4
parentf19946bcdb7be4891022ee0b3d55888ea4dde377 (diff)
Add DraftMessageManager.
-rw-r--r--CMakeLists.txt2
-rw-r--r--SplitSource.php1
-rw-r--r--td/telegram/DraftMessageManager.cpp18
-rw-r--r--td/telegram/DraftMessageManager.h28
-rw-r--r--td/telegram/Global.h9
-rw-r--r--td/telegram/Td.cpp6
-rw-r--r--td/telegram/Td.h3
7 files changed, 67 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index be75595fd..cc5e663b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -433,6 +433,7 @@ set(TDLIB_SOURCE_PART1
td/telegram/DownloadManager.cpp
td/telegram/DownloadManagerCallback.cpp
td/telegram/DraftMessage.cpp
+ td/telegram/DraftMessageManager.cpp
td/telegram/EmailVerification.cpp
td/telegram/EmojiGameInfo.cpp
td/telegram/EmojiGroup.cpp
@@ -816,6 +817,7 @@ set(TDLIB_SOURCE_PART2
td/telegram/DownloadManager.h
td/telegram/DownloadManagerCallback.h
td/telegram/DraftMessage.h
+ td/telegram/DraftMessageManager.h
td/telegram/EmailVerification.h
td/telegram/EmojiGameInfo.h
td/telegram/EmojiGroup.h
diff --git a/SplitSource.php b/SplitSource.php
index 78f6c82d3..030dda06d 100644
--- a/SplitSource.php
+++ b/SplitSource.php
@@ -352,6 +352,7 @@ function split_file($file, $chunks, $undo) {
'documents_manager[_(-](?![.]get[(][)])|DocumentsManager' => 'DocumentsManager',
'download_manager[_(-](?![.]get[(][)])|DownloadManager[^C]' => 'DownloadManager',
'DownloadManagerCallback' => 'DownloadManagerCallback',
+ 'draft_message_manager[_(-](?![.]get[(][)])|DraftMessageManager' => 'DraftMessageManager',
'EmailVerification' => 'EmailVerification',
'EmojiGroup' => 'EmojiGroup',
'FactCheck' => 'FactCheck',
diff --git a/td/telegram/DraftMessageManager.cpp b/td/telegram/DraftMessageManager.cpp
new file mode 100644
index 000000000..2802a1f41
--- /dev/null
+++ b/td/telegram/DraftMessageManager.cpp
@@ -0,0 +1,18 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2025
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+#include "td/telegram/DraftMessageManager.h"
+
+namespace td {
+
+DraftMessageManager::DraftMessageManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) {
+}
+
+void DraftMessageManager::tear_down() {
+ parent_.reset();
+}
+
+} // namespace td
diff --git a/td/telegram/DraftMessageManager.h b/td/telegram/DraftMessageManager.h
new file mode 100644
index 000000000..79c86632b
--- /dev/null
+++ b/td/telegram/DraftMessageManager.h
@@ -0,0 +1,28 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2025
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+#pragma once
+
+#include "td/actor/actor.h"
+
+#include "td/utils/common.h"
+
+namespace td {
+
+class Td;
+
+class DraftMessageManager final : public Actor {
+ public:
+ DraftMessageManager(Td *td, ActorShared<> parent);
+
+ private:
+ void tear_down() final;
+
+ Td *td_;
+ ActorShared<> parent_;
+};
+
+} // namespace td
diff --git a/td/telegram/Global.h b/td/telegram/Global.h
index 4ec45cbc0..1fb69fc7e 100644
--- a/td/telegram/Global.h
+++ b/td/telegram/Global.h
@@ -50,6 +50,7 @@ class DialogInviteLinkManager;
class DialogManager;
class DialogParticipantManager;
class DownloadManager;
+class DraftMessageManager;
class FileManager;
class FileReferenceManager;
class ForumTopicManager;
@@ -334,6 +335,13 @@ class Global final : public ActorContext {
download_manager_ = std::move(download_manager);
}
+ ActorId<DraftMessageManager> draft_message_manager() const {
+ return draft_message_manager_;
+ }
+ void set_draft_message_manager(ActorId<DraftMessageManager> draft_message_manager) {
+ draft_message_manager_ = std::move(draft_message_manager);
+ }
+
ActorId<FileManager> file_manager() const {
return file_manager_;
}
@@ -753,6 +761,7 @@ class Global final : public ActorContext {
ActorId<DialogManager> dialog_manager_;
ActorId<DialogParticipantManager> dialog_participant_manager_;
ActorId<DownloadManager> download_manager_;
+ ActorId<DraftMessageManager> draft_message_manager_;
ActorId<FileManager> file_manager_;
ActorId<FileReferenceManager> file_reference_manager_;
ActorId<ForumTopicManager> forum_topic_manager_;
diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp
index 3f5472e81..042a4b322 100644
--- a/td/telegram/Td.cpp
+++ b/td/telegram/Td.cpp
@@ -37,6 +37,7 @@
#include "td/telegram/DocumentsManager.h"
#include "td/telegram/DownloadManager.h"
#include "td/telegram/DownloadManagerCallback.h"
+#include "td/telegram/DraftMessageManager.h"
#include "td/telegram/FileReferenceManager.h"
#include "td/telegram/files/FileId.h"
#include "td/telegram/files/FileManager.h"
@@ -532,6 +533,7 @@ void Td::dec_actor_refcnt() {
reset_manager(dialog_participant_manager_, "DialogParticipantManager");
reset_manager(documents_manager_, "DocumentsManager");
reset_manager(download_manager_, "DownloadManager");
+ reset_manager(draft_message_manager_, "DraftMessageManager");
reset_manager(file_manager_, "FileManager");
reset_manager(file_reference_manager_, "FileReferenceManager");
reset_manager(forum_topic_manager_, "ForumTopicManager");
@@ -710,6 +712,7 @@ void Td::clear() {
reset_actor(ActorOwn<Actor>(std::move(dialog_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(dialog_participant_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(download_manager_actor_)));
+ reset_actor(ActorOwn<Actor>(std::move(draft_message_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(file_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(file_reference_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(forum_topic_manager_actor_)));
@@ -1201,6 +1204,9 @@ void Td::init_managers() {
download_manager_ = DownloadManager::create(td::make_unique<DownloadManagerCallback>(this, create_reference()));
download_manager_actor_ = register_actor("DownloadManager", download_manager_.get());
G()->set_download_manager(download_manager_actor_.get());
+ draft_message_manager_ = make_unique<DraftMessageManager>(this, create_reference());
+ draft_message_manager_actor_ = register_actor("DraftMessageManager", draft_message_manager_.get());
+ G()->set_draft_message_manager(draft_message_manager_actor_.get());
forum_topic_manager_ = make_unique<ForumTopicManager>(this, create_reference());
forum_topic_manager_actor_ = register_actor("ForumTopicManager", forum_topic_manager_.get());
G()->set_forum_topic_manager(forum_topic_manager_actor_.get());
diff --git a/td/telegram/Td.h b/td/telegram/Td.h
index 3be4f0733..262dcafa0 100644
--- a/td/telegram/Td.h
+++ b/td/telegram/Td.h
@@ -60,6 +60,7 @@ class DialogManager;
class DialogParticipantManager;
class DocumentsManager;
class DownloadManager;
+class DraftMessageManager;
class FileManager;
class FileReferenceManager;
class ForumTopicManager;
@@ -206,6 +207,8 @@ class Td final : public Actor {
ActorOwn<DialogManager> dialog_manager_actor_;
unique_ptr<DialogParticipantManager> dialog_participant_manager_;
ActorOwn<DialogParticipantManager> dialog_participant_manager_actor_;
+ unique_ptr<DraftMessageManager> draft_message_manager_;
+ ActorOwn<DraftMessageManager> draft_message_manager_actor_;
unique_ptr<DownloadManager> download_manager_;
ActorOwn<DownloadManager> download_manager_actor_;
unique_ptr<FileManager> file_manager_;