Replace MAX_INCLUDED_FILTER_DIALOGS with a function.
This commit is contained in:
parent
ef28bae155
commit
c584b48c10
@ -16,6 +16,10 @@
|
||||
|
||||
namespace td {
|
||||
|
||||
int32 DialogFilter::get_max_filter_dialogs() {
|
||||
return 100; // server side limit
|
||||
}
|
||||
|
||||
unique_ptr<DialogFilter> DialogFilter::get_dialog_filter(
|
||||
telegram_api::object_ptr<telegram_api::DialogFilter> filter_ptr, bool with_id) {
|
||||
if (filter_ptr->get_id() != telegram_api::dialogFilter::ID) {
|
||||
@ -92,16 +96,15 @@ Status DialogFilter::check_limits() const {
|
||||
auto included_secret_dialog_count = static_cast<int32>(included_dialog_ids.size()) - included_server_dialog_count;
|
||||
auto pinned_secret_dialog_count = static_cast<int32>(pinned_dialog_ids.size()) - pinned_server_dialog_count;
|
||||
|
||||
if (excluded_server_dialog_count > MAX_INCLUDED_FILTER_DIALOGS ||
|
||||
excluded_secret_dialog_count > MAX_INCLUDED_FILTER_DIALOGS) {
|
||||
auto limit = get_max_filter_dialogs();
|
||||
if (excluded_server_dialog_count > limit || excluded_secret_dialog_count > limit) {
|
||||
return Status::Error(400, "The maximum number of excluded chats exceeded");
|
||||
}
|
||||
if (included_server_dialog_count > MAX_INCLUDED_FILTER_DIALOGS ||
|
||||
included_secret_dialog_count > MAX_INCLUDED_FILTER_DIALOGS) {
|
||||
if (included_server_dialog_count > limit || included_secret_dialog_count > limit) {
|
||||
return Status::Error(400, "The maximum number of included chats exceeded");
|
||||
}
|
||||
if (included_server_dialog_count + pinned_server_dialog_count > MAX_INCLUDED_FILTER_DIALOGS ||
|
||||
included_secret_dialog_count + pinned_secret_dialog_count > MAX_INCLUDED_FILTER_DIALOGS) {
|
||||
if (included_server_dialog_count + pinned_server_dialog_count > limit ||
|
||||
included_secret_dialog_count + pinned_secret_dialog_count > limit) {
|
||||
return Status::Error(400, "The maximum number of pinned chats exceeded");
|
||||
}
|
||||
|
||||
|
@ -20,8 +20,6 @@ namespace td {
|
||||
|
||||
class DialogFilter {
|
||||
public:
|
||||
static constexpr int32 MAX_INCLUDED_FILTER_DIALOGS = 100; // server side limit
|
||||
|
||||
DialogFilterId dialog_filter_id;
|
||||
string title;
|
||||
string emoji;
|
||||
@ -43,6 +41,8 @@ class DialogFilter {
|
||||
template <class ParserT>
|
||||
void parse(ParserT &parser);
|
||||
|
||||
static int32 get_max_filter_dialogs();
|
||||
|
||||
static unique_ptr<DialogFilter> get_dialog_filter(telegram_api::object_ptr<telegram_api::DialogFilter> filter_ptr,
|
||||
bool with_id);
|
||||
|
||||
|
@ -19069,8 +19069,9 @@ Result<unique_ptr<DialogFilter>> MessagesManager::create_dialog_filter(DialogFil
|
||||
void MessagesManager::create_dialog_filter(td_api::object_ptr<td_api::chatFilter> filter,
|
||||
Promise<td_api::object_ptr<td_api::chatFilterInfo>> &&promise) {
|
||||
CHECK(!td_->auth_manager_->is_bot());
|
||||
auto max_dialog_filters = G()->shared_config().get_option_integer("chat_filter_count_max");
|
||||
if (dialog_filters_.size() >= max_dialog_filters) {
|
||||
auto max_dialog_filters = clamp(G()->shared_config().get_option_integer("chat_filter_count_max"),
|
||||
static_cast<int64>(0), static_cast<int64>(100));
|
||||
if (dialog_filters_.size() >= narrow_cast<size_t>(max_dialog_filters)) {
|
||||
return promise.set_error(Status::Error(400, "The maximum number of chat folders exceeded"));
|
||||
}
|
||||
if (!is_update_chat_filters_sent_) {
|
||||
@ -19813,7 +19814,7 @@ void MessagesManager::clear_all_draft_messages(bool exclude_secret_chats, Promis
|
||||
|
||||
int32 MessagesManager::get_pinned_dialogs_limit(DialogListId dialog_list_id) {
|
||||
if (dialog_list_id.is_filter()) {
|
||||
return DialogFilter::MAX_INCLUDED_FILTER_DIALOGS;
|
||||
return DialogFilter::get_max_filter_dialogs();
|
||||
}
|
||||
|
||||
Slice key{"pinned_chat_count_max"};
|
||||
@ -33111,7 +33112,7 @@ vector<DialogListId> MessagesManager::get_dialog_lists_to_add_dialog(DialogId di
|
||||
// the dialog isn't added yet to the dialog list
|
||||
// check that it can be actually added
|
||||
if (dialog_filter->included_dialog_ids.size() + dialog_filter->pinned_dialog_ids.size() <
|
||||
DialogFilter::MAX_INCLUDED_FILTER_DIALOGS) {
|
||||
narrow_cast<size_t>(DialogFilter::get_max_filter_dialogs())) {
|
||||
// fast path
|
||||
result.push_back(DialogListId(dialog_filter_id));
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user