Merge old and new quick reply message contents.
This commit is contained in:
parent
4c72dc8ec5
commit
0a29b0089c
@ -1519,6 +1519,7 @@ void QuickReplyManager::process_send_quick_reply_updates(QuickReplyShortcutId sh
|
|||||||
std::move(static_cast<telegram_api::updateQuickReplyMessage *>(update.get())->message_),
|
std::move(static_cast<telegram_api::updateQuickReplyMessage *>(update.get())->message_),
|
||||||
"process_send_quick_reply_updates");
|
"process_send_quick_reply_updates");
|
||||||
if (message != nullptr && message->shortcut_id == shortcut_id) {
|
if (message != nullptr && message->shortcut_id == shortcut_id) {
|
||||||
|
update_message_content(it->get(), message.get());
|
||||||
auto old_message_it = get_message_it(s, message->message_id);
|
auto old_message_it = get_message_it(s, message->message_id);
|
||||||
if (old_message_it == s->messages_.end()) {
|
if (old_message_it == s->messages_.end()) {
|
||||||
change_message_files({shortcut_id, message->message_id}, message.get(), {});
|
change_message_files({shortcut_id, message->message_id}, message.get(), {});
|
||||||
@ -1551,6 +1552,34 @@ void QuickReplyManager::process_send_quick_reply_updates(QuickReplyShortcutId sh
|
|||||||
save_quick_reply_shortcuts();
|
save_quick_reply_shortcuts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickReplyManager::update_message_content(QuickReplyMessage *old_message, QuickReplyMessage *new_message) {
|
||||||
|
CHECK(old_message->message_id.is_yet_unsent());
|
||||||
|
unique_ptr<MessageContent> &old_content = old_message->content;
|
||||||
|
unique_ptr<MessageContent> &new_content = new_message->content;
|
||||||
|
MessageContentType old_content_type = old_content->get_type();
|
||||||
|
MessageContentType new_content_type = new_content->get_type();
|
||||||
|
|
||||||
|
auto old_file_id = get_message_content_any_file_id(old_content.get());
|
||||||
|
auto need_merge_files = new_message->edit_date == 0 && old_file_id.is_valid();
|
||||||
|
if (old_content_type != new_content_type) {
|
||||||
|
if (need_merge_files) {
|
||||||
|
td_->file_manager_->try_merge_documents(old_file_id, get_message_content_any_file_id(new_content.get()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bool is_content_changed = false;
|
||||||
|
bool need_update = false;
|
||||||
|
merge_message_contents(td_, old_content.get(), new_content.get(), true, DialogId(), need_merge_files,
|
||||||
|
is_content_changed, need_update);
|
||||||
|
}
|
||||||
|
if (old_file_id.is_valid()) {
|
||||||
|
// the file is likely to be already merged with a server file, but if not we need to
|
||||||
|
// cancel file upload of the main file to allow next upload with the same file to succeed
|
||||||
|
send_closure_later(G()->file_manager(), &FileManager::cancel_upload, old_file_id);
|
||||||
|
|
||||||
|
update_message_content_file_id_remote(new_content.get(), old_file_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QuickReplyManager::on_failed_send_quick_reply_messages(QuickReplyShortcutId shortcut_id, vector<int64> random_ids,
|
void QuickReplyManager::on_failed_send_quick_reply_messages(QuickReplyShortcutId shortcut_id, vector<int64> random_ids,
|
||||||
Status error) {
|
Status error) {
|
||||||
auto *s = get_shortcut(shortcut_id);
|
auto *s = get_shortcut(shortcut_id);
|
||||||
|
@ -327,6 +327,8 @@ class QuickReplyManager final : public Actor {
|
|||||||
|
|
||||||
void on_failed_send_quick_reply_messages(QuickReplyShortcutId shortcut_id, vector<int64> random_ids, Status error);
|
void on_failed_send_quick_reply_messages(QuickReplyShortcutId shortcut_id, vector<int64> random_ids, Status error);
|
||||||
|
|
||||||
|
void update_message_content(QuickReplyMessage *old_message, QuickReplyMessage *new_message);
|
||||||
|
|
||||||
void do_send_message(const QuickReplyMessage *m, vector<int> bad_parts = {});
|
void do_send_message(const QuickReplyMessage *m, vector<int> bad_parts = {});
|
||||||
|
|
||||||
void on_upload_media(FileId file_id, telegram_api::object_ptr<telegram_api::InputFile> input_file);
|
void on_upload_media(FileId file_id, telegram_api::object_ptr<telegram_api::InputFile> input_file);
|
||||||
|
Loading…
Reference in New Issue
Block a user