From 139d1d92ae70eb7b223f4853272b70fcaf8f4c0f Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 27 Feb 2024 23:47:29 +0300 Subject: [PATCH] Save quick reply shortcuts to binlog. --- td/telegram/QuickReplyManager.cpp | 16 ++++++++++++++-- td/telegram/QuickReplyManager.h | 4 ++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/td/telegram/QuickReplyManager.cpp b/td/telegram/QuickReplyManager.cpp index 346af0b60..05cf3a369 100644 --- a/td/telegram/QuickReplyManager.cpp +++ b/td/telegram/QuickReplyManager.cpp @@ -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 vectorserver_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 QuickReplyManager::get_update_quick_reply_shortcut_object( const Shortcut *s, const char *source) const { return td_api::make_object(get_quick_reply_shortcut_object(s, source)); diff --git a/td/telegram/QuickReplyManager.h b/td/telegram/QuickReplyManager.h index 20ee35c92..e4b79eb92 100644 --- a/td/telegram/QuickReplyManager.h +++ b/td/telegram/QuickReplyManager.h @@ -206,6 +206,10 @@ class QuickReplyManager final : public Actor { void reorder_quick_reply_shortcuts_on_server(vector shortcut_ids, Promise &&promise); + string get_quick_reply_shortcuts_database_key(); + + void save_quick_reply_shortcuts(); + Shortcuts shortcuts_; FlatHashSet deleted_shortcut_ids_;