Fix sending messages with links.

This commit is contained in:
John Preston 2019-05-28 14:33:35 +02:00
parent 39a80e9de7
commit f0ed5640db

View File

@ -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();
}
}
}