diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index d7faa350f7..c038252778 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -170,16 +170,11 @@ namespace App { peerToChannel(peerId), message.vid.v); if (existing) { - auto update = true; if (existing->isLocalUpdateMedia()) { - if (checkEntitiesAndViewsUpdate(m.c_message())) { - update = false; - existing->setIsLocalUpdateMedia(false); - } - } - if (update) { - existing->applyEdition(message); + checkEntitiesAndViewsUpdate(m.c_message()); } + existing->applyEdition(message); + existing->setIsLocalUpdateMedia(false); } }); } diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 3980c61261..731b8460a4 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -139,6 +139,9 @@ public: // For edit media in history_message. virtual void returnSavedMedia() {}; + void savePreviousMedia() { + _savedMedia = _media->clone(this); + } void clearSavedMedia() { _isEditingMedia = false; _savedMedia = nullptr; diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 63258e1bf5..be9ffb004e 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -926,7 +926,9 @@ void HistoryMessage::applyEdition(const MTPDmessage &message) { textWithEntities.entities = TextUtilities::EntitiesFromMTP(message.ventities.v); } setReplyMarkup(message.has_reply_markup() ? (&message.vreply_markup) : nullptr); - refreshMedia(message.has_media() ? (&message.vmedia) : nullptr); + if (!_isLocalUpdateMedia) { + refreshMedia(message.has_media() ? (&message.vmedia) : nullptr); + } setViewsCount(message.has_views() ? message.vviews.v : -1); setText(textWithEntities); diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 5fa4db3075..35fae084a3 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -4324,6 +4324,7 @@ void HistoryWidget::sendFileConfirmed( MTP_long(groupId)); if (itemToEdit) { + itemToEdit->savePreviousMedia(); itemToEdit->applyEdition(mtpMessage.c_message()); } else { history->addNewMessage(mtpMessage, NewMessageUnread); @@ -4354,6 +4355,7 @@ void HistoryWidget::sendFileConfirmed( MTP_long(groupId)); if (itemToEdit) { + itemToEdit->savePreviousMedia(); itemToEdit->applyEdition(mtpMessage.c_message()); } else { history->addNewMessage(mtpMessage, NewMessageUnread); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index b603a7a340..fb87c2dcc3 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -843,8 +843,10 @@ void MainWidget::cancelUploadLayer(not_null item) { if (const auto item = App::histItemById(itemId)) { const auto history = item->history(); if (!item->isEditingMedia()) { - item->destroy(); - history->requestChatListMessage(); + if (!IsServerMsgId(itemId.msg)) { + item->destroy(); + history->requestChatListMessage(); + } } else { item->returnSavedMedia(); session().uploader().cancel(item->fullId());