diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index e1a560e65..0fa1e2d54 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -1629,11 +1629,10 @@ bool Session::checkEntitiesAndViewsUpdate(const MTPDmessage &data) { return result; }(); if (const auto existing = message(peerToChannel(peer), data.vid().v)) { - existing->setText({ + existing->updateSentContent({ qs(data.vmessage()), TextUtilities::EntitiesFromMTP(data.ventities().value_or_empty()) - }); - existing->updateSentMedia(data.vmedia()); + }, data.vmedia()); existing->updateReplyMarkup(data.vreply_markup()); existing->updateForwardedInfo(data.vfwd_from()); existing->setViewsCount(data.vviews().value_or(-1)); diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index cebc5d077..dd730c6f8 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -594,7 +594,9 @@ HistoryItem *History::createItem( result->removeMainView(); } if (message.type() == mtpc_message) { - result->updateSentMedia(message.c_message().vmedia()); + result->updateSentContent( + result->originalText(), + message.c_message().vmedia()); } return result; } diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 8c91de1d9..9d19042cd 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -196,7 +196,9 @@ public: virtual void applyEdition(const MTPDmessageService &message) { } void applyEditionToHistoryCleared(); - virtual void updateSentMedia(const MTPMessageMedia *media) { + virtual void updateSentContent( + const TextWithEntities &textWithEntities, + const MTPMessageMedia *media) { } virtual void updateReplyMarkup(const MTPReplyMarkup *markup) { } diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 62420ec43..766986fd3 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -1014,13 +1014,17 @@ void HistoryMessage::applyEdition(const MTPDmessageService &message) { } } -void HistoryMessage::updateSentMedia(const MTPMessageMedia *media) { +void HistoryMessage::updateSentContent( + const TextWithEntities &textWithEntities, + const MTPMessageMedia *media) { + const auto isolated = isolatedEmoji(); + setText(textWithEntities); if (_flags & MTPDmessage_ClientFlag::f_from_inline_bot) { if (!media || !_media || !_media->updateInlineResultMedia(*media)) { refreshSentMedia(media); } _flags &= ~MTPDmessage_ClientFlag::f_from_inline_bot; - } else { + } else if (media || _media || !isolated || isolated != isolatedEmoji()) { if (!media || !_media || !_media->updateSentMedia(*media)) { refreshSentMedia(media); } diff --git a/Telegram/SourceFiles/history/history_message.h b/Telegram/SourceFiles/history/history_message.h index a0c256852..fe7336f81 100644 --- a/Telegram/SourceFiles/history/history_message.h +++ b/Telegram/SourceFiles/history/history_message.h @@ -122,7 +122,9 @@ public: void applyEdition(const MTPDmessage &message) override; void applyEdition(const MTPDmessageService &message) override; - void updateSentMedia(const MTPMessageMedia *media) override; + void updateSentContent( + const TextWithEntities &textWithEntities, + const MTPMessageMedia *media) override; void updateReplyMarkup(const MTPReplyMarkup *markup) override { setReplyMarkup(markup); } diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index f21c526e8..f0f42de7d 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -3817,11 +3817,10 @@ void MainWidget::feedUpdates(const MTPUpdates &updates, uint64 randomId) { item->id, ApiWrap::RequestMessageDataCallback()); } - item->setText({ + item->updateSentContent({ sent.text, TextUtilities::EntitiesFromMTP(list.value_or_empty()) - }); - item->updateSentMedia(d.vmedia()); + }, d.vmedia()); if (const auto channel = item->history()->peer->asChannel()) { channel->growSlowmodeLastMessage(d.vdate().v); }