Save quick reply shortcuts to binlog.

This commit is contained in:
levlam 2024-02-27 23:47:29 +03:00
parent b7e8584260
commit 139d1d92ae
2 changed files with 18 additions and 2 deletions

View File

@ -523,6 +523,7 @@ void QuickReplyManager::on_reload_quick_reply_shortcuts(
case telegram_api::messages_quickRepliesNotModified::ID:
if (!shortcuts_.are_inited_) {
shortcuts_.are_inited_ = true;
save_quick_reply_shortcuts();
send_update_quick_reply_shortcuts();
}
break;
@ -643,6 +644,7 @@ void QuickReplyManager::on_reload_quick_reply_shortcuts(
shortcuts_.shortcuts_ = std::move(new_shortcuts);
shortcuts_.are_inited_ = true;
save_quick_reply_shortcuts();
for (auto shortcut_id : changed_shortcut_ids) {
send_update_quick_reply_shortcut(get_shortcut(shortcut_id), "on_reload_quick_reply_shortcuts 2");
}
@ -697,6 +699,7 @@ void QuickReplyManager::delete_quick_reply_shortcut(QuickReplyShortcutId shortcu
return promise.set_error(Status::Error(400, "Shortcut not found"));
}
shortcuts_.shortcuts_.erase(it);
save_quick_reply_shortcuts();
if (!shortcut_id.is_server()) {
return promise.set_value(Unit());
@ -742,11 +745,11 @@ void QuickReplyManager::reorder_quick_reply_shortcuts(const vector<QuickReplySho
shortcuts.push_back(std::move(shortcut));
}
}
bool is_list_changed = old_shortcut_ids != get_shortcut_ids();
shortcuts_.shortcuts_ = std::move(shortcuts);
if (!is_list_changed) {
if (old_shortcut_ids == get_shortcut_ids()) {
return promise.set_value(Unit());
}
save_quick_reply_shortcuts();
send_update_quick_reply_shortcuts();
auto new_server_shortcut_ids = get_server_shortcut_ids();
@ -894,6 +897,15 @@ bool QuickReplyManager::update_shortcut_from(Shortcut *new_shortcut, Shortcut *o
return *is_object_changed || is_changed || old_shortcut->server_total_count_ != new_shortcut->server_total_count_;
}
string QuickReplyManager::get_quick_reply_shortcuts_database_key() {
return "quick_reply_shortcuts";
}
void QuickReplyManager::save_quick_reply_shortcuts() {
G()->td_db()->get_binlog_pmc()->set(get_quick_reply_shortcuts_database_key(),
log_event_store(shortcuts_).as_slice().str());
}
td_api::object_ptr<td_api::updateQuickReplyShortcut> QuickReplyManager::get_update_quick_reply_shortcut_object(
const Shortcut *s, const char *source) const {
return td_api::make_object<td_api::updateQuickReplyShortcut>(get_quick_reply_shortcut_object(s, source));

View File

@ -206,6 +206,10 @@ class QuickReplyManager final : public Actor {
void reorder_quick_reply_shortcuts_on_server(vector<QuickReplyShortcutId> shortcut_ids, Promise<Unit> &&promise);
string get_quick_reply_shortcuts_database_key();
void save_quick_reply_shortcuts();
Shortcuts shortcuts_;
FlatHashSet<QuickReplyShortcutId, QuickReplyShortcutIdHash> deleted_shortcut_ids_;