diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 078a3e7630..dbe7acd090 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -391,7 +391,7 @@ MainWidget::MainWidget( ) | rpl::start_with_next([=](const Media::Player::TrackState &state) { handleAudioUpdate(state); }, lifetime()); - + subscribe(session().calls().currentCallChanged(), [this](Calls::Call *call) { setCurrentCall(call); }); session().data().currentExportView( @@ -3784,30 +3784,31 @@ void MainWidget::feedUpdates(const MTPUpdates &updates, uint64 randomId) { if (!IsServerMsgId(d.vid.v)) { LOG(("API Error: Bad msgId got from server: %1").arg(d.vid.v)); } else if (randomId) { - PeerId peerId = 0; - QString text; - session().data().registerMessageSentData(randomId, peerId, text); - - const auto wasAlready = (peerId != 0) - && (session().data().message(peerToChannel(peerId), d.vid.v) != nullptr); + const auto sent = session().data().messageSentData(randomId); + const auto lookupMessage = [&] { + return sent.peerId + ? session().data().message( + peerToChannel(sent.peerId), + d.vid.v) + : nullptr; + }; + const auto wasAlready = (lookupMessage() != nullptr); feedUpdate(MTP_updateMessageID(d.vid, MTP_long(randomId))); // ignore real date - if (peerId) { - if (auto item = session().data().message(peerToChannel(peerId), d.vid.v)) { - if (d.has_entities() && !MentionUsersLoaded(&session(), d.ventities)) { - session().api().requestMessageData( - item->history()->peer->asChannel(), - item->id, - ApiWrap::RequestMessageDataCallback()); - } - const auto entities = d.has_entities() - ? TextUtilities::EntitiesFromMTP(d.ventities.v) - : EntitiesInText(); - const auto media = d.has_media() ? &d.vmedia : nullptr; - item->setText({ text, entities }); - item->updateSentMedia(media); - if (!wasAlready) { - item->indexAsNewItem(); - } + if (const auto item = lookupMessage()) { + if (d.has_entities() && !MentionUsersLoaded(&session(), d.ventities)) { + session().api().requestMessageData( + item->history()->peer->asChannel(), + item->id, + ApiWrap::RequestMessageDataCallback()); + } + const auto entities = d.has_entities() + ? TextUtilities::EntitiesFromMTP(d.ventities.v) + : EntitiesInText(); + const auto media = d.has_media() ? &d.vmedia : nullptr; + item->setText({ sent.text, entities }); + item->updateSentMedia(media); + if (!wasAlready) { + item->indexAsNewItem(); } } }