diff options
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | SplitSource.php | 1 | ||||
| -rw-r--r-- | td/telegram/CommunityManager.cpp | 18 | ||||
| -rw-r--r-- | td/telegram/CommunityManager.h | 28 | ||||
| -rw-r--r-- | td/telegram/Global.h | 9 | ||||
| -rw-r--r-- | td/telegram/Td.cpp | 6 | ||||
| -rw-r--r-- | td/telegram/Td.h | 3 |
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_; |
