diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 0a0af5422..633ee8d57 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -8262,6 +8262,9 @@ getChatFolderChatCount folder:chatFolder = Count; //@description Changes the order of chat folders @chat_folder_ids Identifiers of chat folders in the new correct order @main_chat_list_position Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users reorderChatFolders chat_folder_ids:vector main_chat_list_position:int32 = Ok; +//@description Toggles whether chat folder tags are enabled @are_tags_enabled Pass true to enable folder tags; pass false to disable them +toggleChatFolderTags are_tags_enabled:Bool = Ok; + //@description Returns recommended chat folders for the current user getRecommendedChatFolders = RecommendedChatFolders; diff --git a/td/telegram/DialogFilterManager.cpp b/td/telegram/DialogFilterManager.cpp index 1d1eebdb0..db918cb5a 100644 --- a/td/telegram/DialogFilterManager.cpp +++ b/td/telegram/DialogFilterManager.cpp @@ -1843,6 +1843,25 @@ void DialogFilterManager::on_reorder_dialog_filters(vector dialo synchronize_dialog_filters(); } +void DialogFilterManager::toggle_dialog_filter_tags(bool are_tags_enabled, Promise &&promise) { + if (!td_->option_manager_->get_option_boolean("is_premium")) { + if (!are_tags_enabled) { + return promise.set_value(Unit()); + } + return promise.set_error(Status::Error(400, "Method not available")); + } + + if (are_tags_enabled_ != are_tags_enabled) { + are_tags_enabled = are_tags_enabled; + + save_dialog_filters(); + send_update_chat_folders(); + + synchronize_dialog_filters(); + } + promise.set_value(Unit()); +} + void DialogFilterManager::toggle_are_tags_enabled_on_server(bool are_tags_enabled) { CHECK(!td_->auth_manager_->is_bot()); are_dialog_filters_being_synchronized_ = true; diff --git a/td/telegram/DialogFilterManager.h b/td/telegram/DialogFilterManager.h index 2b85f5e20..956fccf4e 100644 --- a/td/telegram/DialogFilterManager.h +++ b/td/telegram/DialogFilterManager.h @@ -81,6 +81,8 @@ class DialogFilterManager final : public Actor { void reorder_dialog_filters(vector dialog_filter_ids, int32 main_dialog_list_position, Promise &&promise); + void toggle_dialog_filter_tags(bool are_tags_enabled, Promise &&promise); + void get_dialogs_for_dialog_filter_invite_link(DialogFilterId dialog_filter_id, Promise> promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 204d1e8f1..acd77ccb8 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6468,6 +6468,12 @@ void Td::on_request(uint64 id, const td_api::reorderChatFolders &request) { request.main_chat_list_position_, std::move(promise)); } +void Td::on_request(uint64 id, const td_api::toggleChatFolderTags &request) { + CHECK_IS_USER(); + CREATE_OK_REQUEST_PROMISE(); + dialog_filter_manager_->toggle_dialog_filter_tags(request.are_tags_enabled_, std::move(promise)); +} + void Td::on_request(uint64 id, const td_api::getChatsForChatFolderInviteLink &request) { CHECK_IS_USER(); CREATE_REQUEST_PROMISE(); diff --git a/td/telegram/Td.h b/td/telegram/Td.h index 6fe175e11..b431bb4f2 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -1046,6 +1046,8 @@ class Td final : public Actor { void on_request(uint64 id, const td_api::reorderChatFolders &request); + void on_request(uint64 id, const td_api::toggleChatFolderTags &request); + void on_request(uint64 id, const td_api::getChatsForChatFolderInviteLink &request); void on_request(uint64 id, td_api::createChatFolderInviteLink &request); diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 5e555532f..3325830ff 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -5430,6 +5430,10 @@ class CliClient final : public Actor { get_args(args, main_chat_list_position, chat_folder_ids); send_request(td_api::make_object(as_chat_folder_ids(chat_folder_ids), main_chat_list_position)); + } else if (op == "tcft") { + bool are_tags_enabled; + get_args(args, are_tags_enabled); + send_request(td_api::make_object(are_tags_enabled)); } else if (op == "gcfcfil") { ChatFolderId chat_folder_id; get_args(args, chat_folder_id);