Support updateDeleteQuickReplyMessages.
This commit is contained in:
parent
2e4a9c11d3
commit
b7ee5c2ada
@ -807,6 +807,37 @@ void QuickReplyManager::reorder_quick_reply_shortcuts_on_server(vector<QuickRepl
|
||||
td_->create_handler<ReorderQuickRepliesQuery>(std::move(promise))->send(std::move(shortcut_ids));
|
||||
}
|
||||
|
||||
void QuickReplyManager::delete_quick_reply_messages(QuickReplyShortcutId shortcut_id,
|
||||
const vector<MessageId> &message_ids) {
|
||||
auto s = get_shortcut(shortcut_id);
|
||||
if (s == nullptr) {
|
||||
return;
|
||||
}
|
||||
bool is_changed = false;
|
||||
bool is_list_changed = false;
|
||||
for (auto &message_id : message_ids) {
|
||||
auto it = get_message_it(s, message_id);
|
||||
if (it == s->messages_.end()) {
|
||||
if (it == s->messages_.begin()) {
|
||||
is_list_changed = true;
|
||||
}
|
||||
is_changed = true;
|
||||
s->messages_.erase(it);
|
||||
}
|
||||
}
|
||||
if (s->messages_.empty()) {
|
||||
send_update_quick_reply_shortcut_deleted(s);
|
||||
shortcuts_.shortcuts_.erase(get_shortcut_it(shortcut_id));
|
||||
CHECK(is_list_changed && is_changed);
|
||||
}
|
||||
if (is_list_changed) {
|
||||
send_update_quick_reply_shortcuts();
|
||||
}
|
||||
if (is_changed) {
|
||||
save_quick_reply_shortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
void QuickReplyManager::get_quick_reply_shortcut_messages(
|
||||
QuickReplyShortcutId shortcut_id, Promise<td_api::object_ptr<td_api::quickReplyMessages>> &&promise) {
|
||||
auto s = get_shortcut(shortcut_id);
|
||||
@ -970,6 +1001,17 @@ vector<unique_ptr<QuickReplyManager::Shortcut>>::iterator QuickReplyManager::get
|
||||
return shortcuts_.shortcuts_.end();
|
||||
}
|
||||
|
||||
vector<unique_ptr<QuickReplyManager::QuickReplyMessage>>::iterator QuickReplyManager::get_message_it(
|
||||
Shortcut *s, MessageId message_id) {
|
||||
CHECK(s != nullptr);
|
||||
for (auto it = s->messages_.begin(); it != s->messages_.end(); ++it) {
|
||||
if ((*it)->message_id == message_id) {
|
||||
return it;
|
||||
}
|
||||
}
|
||||
return s->messages_.end();
|
||||
}
|
||||
|
||||
vector<QuickReplyShortcutId> QuickReplyManager::get_shortcut_ids() const {
|
||||
return transform(shortcuts_.shortcuts_, [](const unique_ptr<Shortcut> &shortcut) { return shortcut->shortcut_id_; });
|
||||
}
|
||||
|
@ -37,6 +37,8 @@ class QuickReplyManager final : public Actor {
|
||||
|
||||
void reorder_quick_reply_shortcuts(const vector<QuickReplyShortcutId> &shortcut_ids, Promise<Unit> &&promise);
|
||||
|
||||
void delete_quick_reply_messages(QuickReplyShortcutId shortcut_id, const vector<MessageId> &message_ids);
|
||||
|
||||
void get_quick_reply_shortcut_messages(QuickReplyShortcutId shortcut_id,
|
||||
Promise<td_api::object_ptr<td_api::quickReplyMessages>> &&promise);
|
||||
|
||||
@ -179,6 +181,8 @@ class QuickReplyManager final : public Actor {
|
||||
|
||||
vector<unique_ptr<Shortcut>>::iterator get_shortcut_it(const string &name);
|
||||
|
||||
vector<unique_ptr<QuickReplyMessage>>::iterator get_message_it(Shortcut *s, MessageId message_id);
|
||||
|
||||
bool is_shortcut_list_changed(const vector<unique_ptr<Shortcut>> &new_shortcuts) const;
|
||||
|
||||
vector<QuickReplyShortcutId> get_shortcut_ids() const;
|
||||
|
@ -53,6 +53,7 @@
|
||||
#include "td/telegram/PrivacyManager.h"
|
||||
#include "td/telegram/PublicDialogType.h"
|
||||
#include "td/telegram/QuickReplyManager.h"
|
||||
#include "td/telegram/QuickReplyShortcutId.h"
|
||||
#include "td/telegram/ReactionListType.h"
|
||||
#include "td/telegram/ReactionManager.h"
|
||||
#include "td/telegram/ReactionType.h"
|
||||
@ -4489,15 +4490,21 @@ void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateDeleteQuickRepl
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateDeleteQuickReplyMessages> update,
|
||||
Promise<Unit> &&promise) {
|
||||
vector<MessageId> message_ids;
|
||||
for (auto message : update->messages_) {
|
||||
message_ids.push_back(MessageId(ServerMessageId(message)));
|
||||
}
|
||||
td_->quick_reply_manager_->delete_quick_reply_messages(QuickReplyShortcutId(update->shortcut_id_),
|
||||
std::move(message_ids));
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
// unsupported updates
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateQuickReplyMessage> update, Promise<Unit> &&promise) {
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateDeleteQuickReplyMessages> update,
|
||||
Promise<Unit> &&promise) {
|
||||
promise.set_value(Unit());
|
||||
}
|
||||
|
||||
} // namespace td
|
||||
|
@ -658,11 +658,11 @@ class UpdatesManager final : public Actor {
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateDeleteQuickReply> update, Promise<Unit> &&promise);
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateDeleteQuickReplyMessages> update, Promise<Unit> &&promise);
|
||||
|
||||
// unsupported updates
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateQuickReplyMessage> update, Promise<Unit> &&promise);
|
||||
|
||||
void on_update(tl_object_ptr<telegram_api::updateDeleteQuickReplyMessages> update, Promise<Unit> &&promise);
|
||||
};
|
||||
|
||||
} // namespace td
|
||||
|
Loading…
Reference in New Issue
Block a user