MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / resolveMessageDatas

Method resolveMessageDatas

Telegram/SourceFiles/apiwrap.cpp:664–718  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

662}
663
664void ApiWrap::resolveMessageDatas() {
665 if (_messageDataRequests.empty() && _channelMessageDataRequests.empty()) {
666 return;
667 }
668
669 const auto ids = collectMessageIds(_messageDataRequests);
670 if (!ids.isEmpty()) {
671 const auto requestId = request(MTPmessages_GetMessages(
672 MTP_vector<MTPInputMessage>(ids)
673 )).done([=](
674 const MTPmessages_Messages &result,
675 mtpRequestId requestId) {
676 _session->data().processExistingMessages(nullptr, result);
677 finalizeMessageDataRequest(nullptr, requestId);
678 }).fail([=](const MTP::Error &error, mtpRequestId requestId) {
679 finalizeMessageDataRequest(nullptr, requestId);
680 }).afterDelay(kSmallDelayMs).send();
681
682 for (auto &[msgId, request] : _messageDataRequests) {
683 if (request.requestId > 0) {
684 continue;
685 }
686 request.requestId = requestId;
687 }
688 }
689 for (auto j = _channelMessageDataRequests.begin(); j != _channelMessageDataRequests.cend();) {
690 if (j->second.empty()) {
691 j = _channelMessageDataRequests.erase(j);
692 continue;
693 }
694 const auto ids = collectMessageIds(j->second);
695 if (!ids.isEmpty()) {
696 const auto channel = j->first;
697 const auto requestId = request(MTPchannels_GetMessages(
698 channel->inputChannel(),
699 MTP_vector<MTPInputMessage>(ids)
700 )).done([=](
701 const MTPmessages_Messages &result,
702 mtpRequestId requestId) {
703 _session->data().processExistingMessages(channel, result);
704 finalizeMessageDataRequest(channel, requestId);
705 }).fail([=](const MTP::Error &error, mtpRequestId requestId) {
706 finalizeMessageDataRequest(channel, requestId);
707 }).afterDelay(kSmallDelayMs).send();
708
709 for (auto &[msgId, request] : j->second) {
710 if (request.requestId > 0) {
711 continue;
712 }
713 request.requestId = requestId;
714 }
715 }
716 ++j;
717 }
718}
719
720void ApiWrap::finalizeMessageDataRequest(
721 ChannelData *channel,

Callers

nothing calls this directly

Calls 12

afterDelayMethod · 0.80
inputChannelMethod · 0.80
emptyMethod · 0.45
isEmptyMethod · 0.45
sendMethod · 0.45
failMethod · 0.45
doneMethod · 0.45
dataMethod · 0.45
beginMethod · 0.45
cendMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected