Don't ignore forcely loaded after close users and chats.
This commit is contained in:
parent
13fcffd711
commit
58c99ed63a
@ -8411,13 +8411,14 @@ void ContactsManager::load_user_from_database_impl(UserId user_id, Promise<Unit>
|
||||
G()->td_db()->get_sqlite_pmc()->get(get_user_database_key(user_id), PromiseCreator::lambda([user_id](string value) {
|
||||
send_closure(G()->contacts_manager(),
|
||||
&ContactsManager::on_load_user_from_database, user_id,
|
||||
std::move(value));
|
||||
std::move(value), false);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
void ContactsManager::on_load_user_from_database(UserId user_id, string value) {
|
||||
if (G()->close_flag()) {
|
||||
void ContactsManager::on_load_user_from_database(UserId user_id, string value, bool force) {
|
||||
if (G()->close_flag() && !force) {
|
||||
// the user is in Binlog and will be saved after restart
|
||||
return;
|
||||
}
|
||||
|
||||
@ -8549,7 +8550,7 @@ ContactsManager::User *ContactsManager::get_user_force_impl(UserId user_id) {
|
||||
}
|
||||
|
||||
LOG(INFO) << "Trying to load " << user_id << " from database";
|
||||
on_load_user_from_database(user_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_user_database_key(user_id)));
|
||||
on_load_user_from_database(user_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_user_database_key(user_id)), true);
|
||||
return get_user(user_id);
|
||||
}
|
||||
|
||||
@ -8704,13 +8705,14 @@ void ContactsManager::load_chat_from_database_impl(ChatId chat_id, Promise<Unit>
|
||||
G()->td_db()->get_sqlite_pmc()->get(get_chat_database_key(chat_id), PromiseCreator::lambda([chat_id](string value) {
|
||||
send_closure(G()->contacts_manager(),
|
||||
&ContactsManager::on_load_chat_from_database, chat_id,
|
||||
std::move(value));
|
||||
std::move(value), false);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
void ContactsManager::on_load_chat_from_database(ChatId chat_id, string value) {
|
||||
if (G()->close_flag()) {
|
||||
void ContactsManager::on_load_chat_from_database(ChatId chat_id, string value, bool force) {
|
||||
if (G()->close_flag() && !force) {
|
||||
// the chat is in Binlog and will be saved after restart
|
||||
return;
|
||||
}
|
||||
|
||||
@ -8786,7 +8788,7 @@ ContactsManager::Chat *ContactsManager::get_chat_force(ChatId chat_id) {
|
||||
}
|
||||
|
||||
LOG(INFO) << "Trying to load " << chat_id << " from database";
|
||||
on_load_chat_from_database(chat_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_chat_database_key(chat_id)));
|
||||
on_load_chat_from_database(chat_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_chat_database_key(chat_id)), true);
|
||||
return get_chat(chat_id);
|
||||
}
|
||||
|
||||
@ -8942,13 +8944,14 @@ void ContactsManager::load_channel_from_database_impl(ChannelId channel_id, Prom
|
||||
G()->td_db()->get_sqlite_pmc()->get(
|
||||
get_channel_database_key(channel_id), PromiseCreator::lambda([channel_id](string value) {
|
||||
send_closure(G()->contacts_manager(), &ContactsManager::on_load_channel_from_database, channel_id,
|
||||
std::move(value));
|
||||
std::move(value), false);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
void ContactsManager::on_load_channel_from_database(ChannelId channel_id, string value) {
|
||||
if (G()->close_flag()) {
|
||||
void ContactsManager::on_load_channel_from_database(ChannelId channel_id, string value, bool force) {
|
||||
if (G()->close_flag() && !force) {
|
||||
// the channel is in Binlog and will be saved after restart
|
||||
return;
|
||||
}
|
||||
|
||||
@ -9039,7 +9042,7 @@ ContactsManager::Channel *ContactsManager::get_channel_force(ChannelId channel_i
|
||||
|
||||
LOG(INFO) << "Trying to load " << channel_id << " from database";
|
||||
on_load_channel_from_database(channel_id,
|
||||
G()->td_db()->get_sqlite_sync_pmc()->get(get_channel_database_key(channel_id)));
|
||||
G()->td_db()->get_sqlite_sync_pmc()->get(get_channel_database_key(channel_id)), true);
|
||||
return get_channel(channel_id);
|
||||
}
|
||||
|
||||
@ -9197,13 +9200,14 @@ void ContactsManager::load_secret_chat_from_database_impl(SecretChatId secret_ch
|
||||
G()->td_db()->get_sqlite_pmc()->get(
|
||||
get_secret_chat_database_key(secret_chat_id), PromiseCreator::lambda([secret_chat_id](string value) {
|
||||
send_closure(G()->contacts_manager(), &ContactsManager::on_load_secret_chat_from_database, secret_chat_id,
|
||||
std::move(value));
|
||||
std::move(value), false);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
void ContactsManager::on_load_secret_chat_from_database(SecretChatId secret_chat_id, string value) {
|
||||
if (G()->close_flag()) {
|
||||
void ContactsManager::on_load_secret_chat_from_database(SecretChatId secret_chat_id, string value, bool force) {
|
||||
if (G()->close_flag() && !force) {
|
||||
// the secret chat is in Binlog and will be saved after restart
|
||||
return;
|
||||
}
|
||||
|
||||
@ -9280,7 +9284,7 @@ ContactsManager::SecretChat *ContactsManager::get_secret_chat_force(SecretChatId
|
||||
|
||||
LOG(INFO) << "Trying to load " << secret_chat_id << " from database";
|
||||
on_load_secret_chat_from_database(
|
||||
secret_chat_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_secret_chat_database_key(secret_chat_id)));
|
||||
secret_chat_id, G()->td_db()->get_sqlite_sync_pmc()->get(get_secret_chat_database_key(secret_chat_id)), true);
|
||||
return get_secret_chat(secret_chat_id);
|
||||
}
|
||||
|
||||
|
@ -1268,7 +1268,7 @@ class ContactsManager final : public Actor {
|
||||
void on_save_user_to_database(UserId user_id, bool success);
|
||||
void load_user_from_database(User *u, UserId user_id, Promise<Unit> promise);
|
||||
void load_user_from_database_impl(UserId user_id, Promise<Unit> promise);
|
||||
void on_load_user_from_database(UserId user_id, string value);
|
||||
void on_load_user_from_database(UserId user_id, string value, bool force);
|
||||
|
||||
void save_chat(Chat *c, ChatId chat_id, bool from_binlog);
|
||||
static string get_chat_database_key(ChatId chat_id);
|
||||
@ -1278,7 +1278,7 @@ class ContactsManager final : public Actor {
|
||||
void on_save_chat_to_database(ChatId chat_id, bool success);
|
||||
void load_chat_from_database(Chat *c, ChatId chat_id, Promise<Unit> promise);
|
||||
void load_chat_from_database_impl(ChatId chat_id, Promise<Unit> promise);
|
||||
void on_load_chat_from_database(ChatId chat_id, string value);
|
||||
void on_load_chat_from_database(ChatId chat_id, string value, bool force);
|
||||
|
||||
void save_channel(Channel *c, ChannelId channel_id, bool from_binlog);
|
||||
static string get_channel_database_key(ChannelId channel_id);
|
||||
@ -1288,7 +1288,7 @@ class ContactsManager final : public Actor {
|
||||
void on_save_channel_to_database(ChannelId channel_id, bool success);
|
||||
void load_channel_from_database(Channel *c, ChannelId channel_id, Promise<Unit> promise);
|
||||
void load_channel_from_database_impl(ChannelId channel_id, Promise<Unit> promise);
|
||||
void on_load_channel_from_database(ChannelId channel_id, string value);
|
||||
void on_load_channel_from_database(ChannelId channel_id, string value, bool force);
|
||||
|
||||
void save_secret_chat(SecretChat *c, SecretChatId secret_chat_id, bool from_binlog);
|
||||
static string get_secret_chat_database_key(SecretChatId secret_chat_id);
|
||||
@ -1298,7 +1298,7 @@ class ContactsManager final : public Actor {
|
||||
void on_save_secret_chat_to_database(SecretChatId secret_chat_id, bool success);
|
||||
void load_secret_chat_from_database(SecretChat *c, SecretChatId secret_chat_id, Promise<Unit> promise);
|
||||
void load_secret_chat_from_database_impl(SecretChatId secret_chat_id, Promise<Unit> promise);
|
||||
void on_load_secret_chat_from_database(SecretChatId secret_chat_id, string value);
|
||||
void on_load_secret_chat_from_database(SecretChatId secret_chat_id, string value, bool force);
|
||||
|
||||
void save_user_full(const UserFull *user_full, UserId user_id);
|
||||
static string get_user_full_database_key(UserId user_id);
|
||||
|
Loading…
Reference in New Issue
Block a user