Fixed statistics overview of old messages.

This commit is contained in:
23rd 2023-10-22 21:33:58 +03:00 committed by John Preston
parent 0aa1031402
commit 0be2e8b672

View file

@ -434,19 +434,42 @@ void MessageStatistics::request(Fn<void(Data::MessageStatistics)> done) {
const auto requestPrivateForwards = [=]( const auto requestPrivateForwards = [=](
const Data::StatisticalGraph &messageGraph) { const Data::StatisticalGraph &messageGraph) {
_api.request(MTPstats_GetBroadcastStats( _api.request(MTPchannels_GetMessages(
MTP_flags(MTPstats_GetBroadcastStats::Flags(0)), _channel->inputChannel,
_channel->inputChannel MTP_vector<MTPInputMessage>(
)).done([=](const MTPstats_BroadcastStats &result) { 1,
const auto channelStats = ChannelStatisticsFromTL(result.data()); MTP_inputMessageID(MTP_int(_fullId.msg))))
auto info = Data::StatisticsMessageInteractionInfo(); ).done([=](const MTPmessages_Messages &result) {
for (const auto &r : channelStats.recentMessageInteractions) { const auto process = [&](const MTPVector<MTPMessage> &messages) {
if (r.messageId == _fullId.msg) { const auto &message = messages.v.front();
info = r; return message.match([&](const MTPDmessage &data) {
break; return Data::StatisticsMessageInteractionInfo{
} .messageId = IdFromMessage(message),
} .viewsCount = data.vviews()
requestFirstPublicForwards(messageGraph, info); ? data.vviews()->v
: 0,
.forwardsCount = data.vforwards()
? data.vforwards()->v
: 0,
};
}, [](const MTPDmessageEmpty &) {
return Data::StatisticsMessageInteractionInfo();
}, [](const MTPDmessageService &) {
return Data::StatisticsMessageInteractionInfo();
});
};
auto info = result.match([&](const MTPDmessages_messages &data) {
return process(data.vmessages());
}, [&](const MTPDmessages_messagesSlice &data) {
return process(data.vmessages());
}, [&](const MTPDmessages_channelMessages &data) {
return process(data.vmessages());
}, [](const MTPDmessages_messagesNotModified &) {
return Data::StatisticsMessageInteractionInfo();
});
requestFirstPublicForwards(messageGraph, std::move(info));
}).fail([=](const MTP::Error &error) { }).fail([=](const MTP::Error &error) {
requestFirstPublicForwards(messageGraph, {}); requestFirstPublicForwards(messageGraph, {});
}).send(); }).send();