aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--SplitSource.php1
-rw-r--r--td/telegram/CommunityManager.cpp18
-rw-r--r--td/telegram/CommunityManager.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 7dc49da5c..411b71b24 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -394,6 +394,7 @@ set(TDLIB_SOURCE_PART1
td/telegram/ChatTheme.cpp
td/telegram/ClientActor.cpp
td/telegram/CommonDialogManager.cpp
+ td/telegram/CommunityManager.cpp
td/telegram/ConfigManager.cpp
td/telegram/ConnectionState.cpp
td/telegram/ConnectionStateManager.cpp
@@ -773,6 +774,7 @@ set(TDLIB_SOURCE_PART2
td/telegram/ChatTheme.h
td/telegram/ClientActor.h
td/telegram/CommonDialogManager.h
+ td/telegram/CommunityManager.h
td/telegram/ConfigManager.h
td/telegram/ConnectionState.h
td/telegram/ConnectionStateManager.h
diff --git a/SplitSource.php b/SplitSource.php
index 030dda06d..fcaf0205c 100644
--- a/SplitSource.php
+++ b/SplitSource.php
@@ -329,6 +329,7 @@ function split_file($file, $chunks, $undo) {
'ChatId' => 'ChatId',
'chat_manager[_(-](?![.]get[(][)])|ChatManager([^ ;.]| [^*])' => 'ChatManager',
'common_dialog_manager[_(-](?![.]get[(][)])|CommonDialogManager' => 'CommonDialogManager',
+ 'community_manager[_(-](?![.]get[(][)])|CommunityManager([^ ;.]| [^*])' => 'CommunityManager',
'connection_state_manager[_(-](?![.]get[(][)])|ConnectionStateManager' => 'ConnectionStateManager',
'country_info_manager[_(-](?![.]get[(][)])|CountryInfoManager' => 'CountryInfoManager',
'CurrencyAmount' => 'CurrencyAmount',
diff --git a/td/telegram/CommunityManager.cpp b/td/telegram/CommunityManager.cpp
new file mode 100644
index 000000000..3c5625b37
--- /dev/null
+++ b/td/telegram/CommunityManager.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/CommunityManager.h"
+
+namespace td {
+
+CommunityManager::CommunityManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) {
+}
+
+void CommunityManager::tear_down() {
+ parent_.reset();
+}
+
+} // namespace td
diff --git a/td/telegram/CommunityManager.h b/td/telegram/CommunityManager.h
new file mode 100644
index 000000000..6e3b2ce46
--- /dev/null
+++ b/td/telegram/CommunityManager.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 CommunityManager final : public Actor {
+ public:
+ CommunityManager(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 1fb69fc7e..13a7e426d 100644
--- a/td/telegram/Global.h
+++ b/td/telegram/Global.h
@@ -42,6 +42,7 @@ class BusinessConnectionManager;
class BusinessManager;
class CallManager;
class ChatManager;
+class CommunityManager;
class ConfigManager;
class ConnectionCreator;
class DialogActionManager;
@@ -286,6 +287,13 @@ class Global final : public ActorContext {
chat_manager_ = chat_manager;
}
+ ActorId<CommunityManager> community_manager() const {
+ return community_manager_;
+ }
+ void set_community_manager(ActorId<CommunityManager> community_manager) {
+ community_manager_ = community_manager;
+ }
+
ActorId<ConfigManager> config_manager() const {
return config_manager_;
}
@@ -754,6 +762,7 @@ class Global final : public ActorContext {
ActorId<BusinessManager> business_manager_;
ActorId<CallManager> call_manager_;
ActorId<ChatManager> chat_manager_;
+ ActorId<CommunityManager> community_manager_;
ActorId<ConfigManager> config_manager_;
ActorId<DialogActionManager> dialog_action_manager_;
ActorId<DialogFilterManager> dialog_filter_manager_;
diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp
index 866464da1..d2929096a 100644
--- a/td/telegram/Td.cpp
+++ b/td/telegram/Td.cpp
@@ -25,6 +25,7 @@
#include "td/telegram/ChannelRecommendationManager.h"
#include "td/telegram/ChatManager.h"
#include "td/telegram/CommonDialogManager.h"
+#include "td/telegram/CommunityManager.h"
#include "td/telegram/ConfigManager.h"
#include "td/telegram/ConnectionStateManager.h"
#include "td/telegram/CountryInfoManager.h"
@@ -524,6 +525,7 @@ void Td::dec_actor_refcnt() {
reset_manager(channel_recommendation_manager_, "ChannelRecommendationManager");
reset_manager(chat_manager_, "ChatManager");
reset_manager(common_dialog_manager_, "CommonDialogManager");
+ reset_manager(community_manager_, "CommunityManager");
reset_manager(connection_state_manager_, "ConnectionStateManager");
reset_manager(country_info_manager_, "CountryInfoManager");
reset_manager(dialog_action_manager_, "DialogActionManager");
@@ -704,6 +706,7 @@ void Td::clear() {
reset_actor(ActorOwn<Actor>(std::move(channel_recommendation_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(chat_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(common_dialog_manager_actor_)));
+ reset_actor(ActorOwn<Actor>(std::move(community_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(connection_state_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(country_info_manager_actor_)));
reset_actor(ActorOwn<Actor>(std::move(dialog_action_manager_actor_)));
@@ -1183,6 +1186,9 @@ void Td::init_managers() {
G()->set_chat_manager(chat_manager_actor_.get());
common_dialog_manager_ = make_unique<CommonDialogManager>(this, create_reference());
common_dialog_manager_actor_ = register_actor("CommonDialogManager", common_dialog_manager_.get());
+ community_manager_ = make_unique<CommunityManager>(this, create_reference());
+ community_manager_actor_ = register_actor("CommunityManager", community_manager_.get());
+ G()->set_community_manager(community_manager_actor_.get());
connection_state_manager_ = make_unique<ConnectionStateManager>(this, create_reference());
connection_state_manager_actor_ = register_actor("ConnectionStateManager", connection_state_manager_.get());
country_info_manager_ = make_unique<CountryInfoManager>(this, create_reference());
diff --git a/td/telegram/Td.h b/td/telegram/Td.h
index 262dcafa0..c67956b20 100644
--- a/td/telegram/Td.h
+++ b/td/telegram/Td.h
@@ -49,6 +49,7 @@ class CallbackQueriesManager;
class ChannelRecommendationManager;
class ChatManager;
class CommonDialogManager;
+class CommunityManager;
class ConfigManager;
class ConnectionStateManager;
class CountryInfoManager;
@@ -193,6 +194,8 @@ class Td final : public Actor {
ActorOwn<ChatManager> chat_manager_actor_;
unique_ptr<CommonDialogManager> common_dialog_manager_;
ActorOwn<CommonDialogManager> common_dialog_manager_actor_;
+ unique_ptr<CommunityManager> community_manager_;
+ ActorOwn<CommunityManager> community_manager_actor_;
unique_ptr<ConnectionStateManager> connection_state_manager_;
ActorOwn<ConnectionStateManager> connection_state_manager_actor_;
unique_ptr<CountryInfoManager> country_info_manager_;