Do not reload dialog filters before authorization.

GitOrigin-RevId: c76d4e0a87a24c41a82d288534b4c3c201bf963b
This commit is contained in:
levlam 2020-06-03 19:21:59 +03:00
parent 44c141a776
commit 7680ccf967
3 changed files with 20 additions and 9 deletions

View File

@ -15,6 +15,7 @@
#include "td/telegram/ContactsManager.h"
#include "td/telegram/Global.h"
#include "td/telegram/logevent/LogEvent.h"
#include "td/telegram/MessagesManager.h"
#include "td/telegram/misc.h"
#include "td/telegram/net/DcId.h"
#include "td/telegram/net/NetQueryDispatcher.h"
@ -719,6 +720,9 @@ void AuthManager::on_get_authorization(tl_object_ptr<telegram_api::auth_Authoriz
if ((auth->flags_ & telegram_api::auth_authorization::TMP_SESSIONS_MASK) != 0) {
G()->shared_config().set_option_integer("session_count", auth->tmp_sessions_);
}
if (!is_bot()) {
td->messages_manager_->reload_dialog_filters();
}
td->notification_manager_->init();
td->stickers_manager_->init();
send_closure(td->top_dialog_manager_, &TopDialogManager::do_start_up);

View File

@ -10734,7 +10734,8 @@ void MessagesManager::init() {
start_time_ = Time::now();
if (!td_->auth_manager_->is_bot()) { // ensure that Main and Archive dialog lists are created
bool is_authorized_user = !td_->auth_manager_->is_bot() && td_->auth_manager_->is_authorized();
if (is_authorized_user) { // ensure that Main and Archive dialog lists are created
dialog_folders_[FolderId::main()].folder_id = FolderId::main();
dialog_folders_[FolderId::archive()].folder_id = FolderId::archive();
@ -10742,7 +10743,7 @@ void MessagesManager::init() {
add_dialog_list(DialogListId(FolderId::archive()));
}
if (!td_->auth_manager_->is_bot()) {
if (is_authorized_user) {
vector<NotificationSettingsScope> scopes{NotificationSettingsScope::Private, NotificationSettingsScope::Group,
NotificationSettingsScope::Channel};
for (auto scope : scopes) {
@ -10766,14 +10767,12 @@ void MessagesManager::init() {
channels_notification_settings_.disable_pinned_message_notifications = false;
channels_notification_settings_.disable_mention_notifications = false;
channels_notification_settings_.is_synchronized = false;
if (td_->auth_manager_->is_authorized() && !td_->auth_manager_->is_bot()) {
send_get_scope_notification_settings_query(NotificationSettingsScope::Channel, Promise<>());
}
send_get_scope_notification_settings_query(NotificationSettingsScope::Channel, Promise<>());
}
}
G()->td_db()->get_binlog_pmc()->erase("nsfac");
if (G()->parameters().use_message_db && !td_->auth_manager_->is_bot()) {
if (G()->parameters().use_message_db && is_authorized_user) {
// erase old keys
G()->td_db()->get_binlog_pmc()->erase("last_server_dialog_date");
G()->td_db()->get_binlog_pmc()->erase("unread_message_count");
@ -10970,7 +10969,7 @@ void MessagesManager::init() {
load_calls_db_state();
if (!td_->auth_manager_->is_bot()) {
if (is_authorized_user) {
if (need_synchronize_dialog_filters()) {
reload_dialog_filters();
} else {
@ -14141,6 +14140,7 @@ void MessagesManager::reload_dialog_filters() {
if (G()->close_flag()) {
return;
}
CHECK(!td_->auth_manager_->is_bot());
if (are_dialog_filters_being_synchronized_ || are_dialog_filters_being_reloaded_) {
need_dialog_filters_reload_ = true;
return;
@ -14318,6 +14318,7 @@ void MessagesManager::synchronize_dialog_filters() {
if (G()->close_flag()) {
return;
}
CHECK(!td_->auth_manager_->is_bot());
if (are_dialog_filters_being_synchronized_ || are_dialog_filters_being_reloaded_) {
return;
}
@ -15455,6 +15456,7 @@ void MessagesManager::edit_dialog_filter(DialogFilterId dialog_filter_id, td_api
}
void MessagesManager::update_dialog_filter_on_server(unique_ptr<DialogFilter> &&dialog_filter) {
CHECK(!td_->auth_manager_->is_bot());
CHECK(dialog_filter != nullptr);
are_dialog_filters_being_synchronized_ = true;
dialog_filter->remove_secret_chat_dialog_ids();
@ -15471,6 +15473,7 @@ void MessagesManager::update_dialog_filter_on_server(unique_ptr<DialogFilter> &&
}
void MessagesManager::on_update_dialog_filter(unique_ptr<DialogFilter> dialog_filter, Status result) {
CHECK(!td_->auth_manager_->is_bot());
if (result.is_error()) {
// TODO rollback dialog_filters_ changes if error isn't 429
} else {
@ -15511,6 +15514,7 @@ void MessagesManager::delete_dialog_filter(DialogFilterId dialog_filter_id, Prom
}
void MessagesManager::delete_dialog_filter_on_server(DialogFilterId dialog_filter_id) {
CHECK(!td_->auth_manager_->is_bot());
are_dialog_filters_being_synchronized_ = true;
auto promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_filter_id](Result<Unit> result) {
send_closure(actor_id, &MessagesManager::on_delete_dialog_filter, dialog_filter_id,
@ -15520,6 +15524,7 @@ void MessagesManager::delete_dialog_filter_on_server(DialogFilterId dialog_filte
}
void MessagesManager::on_delete_dialog_filter(DialogFilterId dialog_filter_id, Status result) {
CHECK(!td_->auth_manager_->is_bot());
if (result.is_error()) {
// TODO rollback dialog_filters_ changes if error isn't 429
} else {
@ -15561,6 +15566,7 @@ void MessagesManager::reorder_dialog_filters(vector<DialogFilterId> dialog_filte
}
void MessagesManager::reorder_dialog_filters_on_server(vector<DialogFilterId> dialog_filter_ids) {
CHECK(!td_->auth_manager_->is_bot());
are_dialog_filters_being_synchronized_ = true;
auto promise = PromiseCreator::lambda([actor_id = actor_id(this), dialog_filter_ids](Result<Unit> result) mutable {
send_closure(actor_id, &MessagesManager::on_reorder_dialog_filters, std::move(dialog_filter_ids),
@ -15570,6 +15576,7 @@ void MessagesManager::reorder_dialog_filters_on_server(vector<DialogFilterId> di
}
void MessagesManager::on_reorder_dialog_filters(vector<DialogFilterId> dialog_filter_ids, Status result) {
CHECK(!td_->auth_manager_->is_bot());
if (result.is_error()) {
// TODO rollback dialog_filters_ changes if error isn't 429
} else {

View File

@ -738,6 +738,8 @@ class MessagesManager : public Actor {
void get_login_url(DialogId dialog_id, MessageId message_id, int32 button_id, bool allow_write_access,
Promise<td_api::object_ptr<td_api::httpUrl>> &&promise);
void reload_dialog_filters();
void before_get_difference();
void after_get_difference();
@ -2246,8 +2248,6 @@ class MessagesManager : public Actor {
static void on_reload_dialog_filters_timeout(void *messages_manager_ptr);
void reload_dialog_filters();
void on_get_dialog_filters(Result<vector<tl_object_ptr<telegram_api::dialogFilter>>> r_filters, bool dummy);
bool need_synchronize_dialog_filters() const;