Load quick replies from database in more places.
This commit is contained in:
parent
401318d812
commit
eaba45ebcb
@ -672,6 +672,7 @@ void QuickReplyManager::get_quick_reply_shortcuts(Promise<Unit> &&promise) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::reload_quick_reply_shortcuts() {
|
void QuickReplyManager::reload_quick_reply_shortcuts() {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto promise = PromiseCreator::lambda(
|
auto promise = PromiseCreator::lambda(
|
||||||
[actor_id = actor_id(this)](Result<telegram_api::object_ptr<telegram_api::messages_QuickReplies>> r_shortcuts) {
|
[actor_id = actor_id(this)](Result<telegram_api::object_ptr<telegram_api::messages_QuickReplies>> r_shortcuts) {
|
||||||
send_closure(actor_id, &QuickReplyManager::on_reload_quick_reply_shortcuts, std::move(r_shortcuts));
|
send_closure(actor_id, &QuickReplyManager::on_reload_quick_reply_shortcuts, std::move(r_shortcuts));
|
||||||
@ -887,6 +888,7 @@ int64 QuickReplyManager::get_shortcuts_hash() const {
|
|||||||
|
|
||||||
void QuickReplyManager::set_quick_reply_shortcut_name(QuickReplyShortcutId shortcut_id, const string &name,
|
void QuickReplyManager::set_quick_reply_shortcut_name(QuickReplyShortcutId shortcut_id, const string &name,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
const auto *shortcut = get_shortcut(shortcut_id);
|
const auto *shortcut = get_shortcut(shortcut_id);
|
||||||
if (shortcut == nullptr) {
|
if (shortcut == nullptr) {
|
||||||
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
||||||
@ -910,7 +912,6 @@ void QuickReplyManager::set_quick_reply_shortcut_name(QuickReplyShortcutId short
|
|||||||
void QuickReplyManager::set_quick_reply_shortcut_name_on_server(QuickReplyShortcutId shortcut_id, const string &name,
|
void QuickReplyManager::set_quick_reply_shortcut_name_on_server(QuickReplyShortcutId shortcut_id, const string &name,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
CHECK(shortcut_id.is_server());
|
CHECK(shortcut_id.is_server());
|
||||||
|
|
||||||
td_->create_handler<EditQuickReplyShortcutQuery>(std::move(promise))->send(shortcut_id, name);
|
td_->create_handler<EditQuickReplyShortcutQuery>(std::move(promise))->send(shortcut_id, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -927,6 +928,7 @@ void QuickReplyManager::on_set_quick_reply_shortcut_name(QuickReplyShortcutId sh
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::delete_quick_reply_shortcut(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
void QuickReplyManager::delete_quick_reply_shortcut(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto it = get_shortcut_it(shortcut_id);
|
auto it = get_shortcut_it(shortcut_id);
|
||||||
if (it == shortcuts_.shortcuts_.end()) {
|
if (it == shortcuts_.shortcuts_.end()) {
|
||||||
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
||||||
@ -953,6 +955,7 @@ void QuickReplyManager::delete_quick_reply_shortcut_from_server(QuickReplyShortc
|
|||||||
|
|
||||||
void QuickReplyManager::reorder_quick_reply_shortcuts(const vector<QuickReplyShortcutId> &shortcut_ids,
|
void QuickReplyManager::reorder_quick_reply_shortcuts(const vector<QuickReplyShortcutId> &shortcut_ids,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
FlatHashSet<QuickReplyShortcutId, QuickReplyShortcutIdHash> unique_shortcut_ids;
|
FlatHashSet<QuickReplyShortcutId, QuickReplyShortcutIdHash> unique_shortcut_ids;
|
||||||
for (const auto &shortcut_id : shortcut_ids) {
|
for (const auto &shortcut_id : shortcut_ids) {
|
||||||
if (get_shortcut(shortcut_id) == nullptr) {
|
if (get_shortcut(shortcut_id) == nullptr) {
|
||||||
@ -1001,6 +1004,7 @@ void QuickReplyManager::reorder_quick_reply_shortcuts_on_server(vector<QuickRepl
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::update_quick_reply_message(telegram_api::object_ptr<telegram_api::Message> &&message_ptr) {
|
void QuickReplyManager::update_quick_reply_message(telegram_api::object_ptr<telegram_api::Message> &&message_ptr) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto message = create_message(std::move(message_ptr), "update_quick_reply_message");
|
auto message = create_message(std::move(message_ptr), "update_quick_reply_message");
|
||||||
if (message == nullptr) {
|
if (message == nullptr) {
|
||||||
return;
|
return;
|
||||||
@ -1052,6 +1056,7 @@ void QuickReplyManager::update_quick_reply_message(QuickReplyShortcutId shortcut
|
|||||||
|
|
||||||
void QuickReplyManager::delete_quick_reply_messages_from_updates(QuickReplyShortcutId shortcut_id,
|
void QuickReplyManager::delete_quick_reply_messages_from_updates(QuickReplyShortcutId shortcut_id,
|
||||||
const vector<MessageId> &message_ids) {
|
const vector<MessageId> &message_ids) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto s = get_shortcut(shortcut_id);
|
auto s = get_shortcut(shortcut_id);
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
return;
|
return;
|
||||||
@ -1101,6 +1106,7 @@ void QuickReplyManager::delete_quick_reply_messages(Shortcut *s, const vector<Me
|
|||||||
void QuickReplyManager::delete_quick_reply_shortcut_messages(QuickReplyShortcutId shortcut_id,
|
void QuickReplyManager::delete_quick_reply_shortcut_messages(QuickReplyShortcutId shortcut_id,
|
||||||
const vector<MessageId> &message_ids,
|
const vector<MessageId> &message_ids,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto s = get_shortcut(shortcut_id);
|
auto s = get_shortcut(shortcut_id);
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
||||||
@ -1133,6 +1139,7 @@ void QuickReplyManager::delete_quick_reply_messages_on_server(QuickReplyShortcut
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::get_quick_reply_shortcut_messages(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
void QuickReplyManager::get_quick_reply_shortcut_messages(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto s = get_shortcut(shortcut_id);
|
auto s = get_shortcut(shortcut_id);
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
||||||
@ -1146,6 +1153,7 @@ void QuickReplyManager::get_quick_reply_shortcut_messages(QuickReplyShortcutId s
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::reload_quick_reply_messages(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
void QuickReplyManager::reload_quick_reply_messages(QuickReplyShortcutId shortcut_id, Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
CHECK(shortcut_id.is_valid());
|
CHECK(shortcut_id.is_valid());
|
||||||
if (!shortcut_id.is_server()) {
|
if (!shortcut_id.is_server()) {
|
||||||
return promise.set_value(Unit());
|
return promise.set_value(Unit());
|
||||||
@ -1270,6 +1278,7 @@ int64 QuickReplyManager::get_quick_reply_messages_hash(const Shortcut *s) {
|
|||||||
|
|
||||||
void QuickReplyManager::reload_quick_reply_message(QuickReplyShortcutId shortcut_id, MessageId message_id,
|
void QuickReplyManager::reload_quick_reply_message(QuickReplyShortcutId shortcut_id, MessageId message_id,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
|
load_quick_reply_shortcuts();
|
||||||
auto s = get_shortcut(shortcut_id);
|
auto s = get_shortcut(shortcut_id);
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
return promise.set_error(Status::Error(400, "Shortcut not found"));
|
||||||
@ -1571,6 +1580,7 @@ string QuickReplyManager::get_quick_reply_shortcuts_database_key() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickReplyManager::save_quick_reply_shortcuts() {
|
void QuickReplyManager::save_quick_reply_shortcuts() {
|
||||||
|
CHECK(shortcuts_.are_inited_);
|
||||||
G()->td_db()->get_binlog_pmc()->set(get_quick_reply_shortcuts_database_key(),
|
G()->td_db()->get_binlog_pmc()->set(get_quick_reply_shortcuts_database_key(),
|
||||||
log_event_store(shortcuts_).as_slice().str());
|
log_event_store(shortcuts_).as_slice().str());
|
||||||
}
|
}
|
||||||
@ -1580,6 +1590,7 @@ void QuickReplyManager::load_quick_reply_shortcuts() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
shortcuts_.are_loaded_from_database_ = true;
|
shortcuts_.are_loaded_from_database_ = true;
|
||||||
|
CHECK(shortcuts_.load_queries_.empty());
|
||||||
|
|
||||||
auto shortcuts_str = G()->td_db()->get_binlog_pmc()->get(get_quick_reply_shortcuts_database_key());
|
auto shortcuts_str = G()->td_db()->get_binlog_pmc()->get(get_quick_reply_shortcuts_database_key());
|
||||||
auto status = log_event_parse(shortcuts_, shortcuts_str);
|
auto status = log_event_parse(shortcuts_, shortcuts_str);
|
||||||
|
Loading…
Reference in New Issue
Block a user