Added API support for request of async zoom single chart.
This commit is contained in:
parent
bb359f6493
commit
eb0ab9609f
|
@ -20,11 +20,17 @@ namespace {
|
||||||
const MTPStatsGraph &tl) {
|
const MTPStatsGraph &tl) {
|
||||||
return tl.match([&](const MTPDstatsGraph &d) {
|
return tl.match([&](const MTPDstatsGraph &d) {
|
||||||
using namespace Statistic;
|
using namespace Statistic;
|
||||||
|
const auto zoomToken = d.vzoom_token().has_value()
|
||||||
|
? qs(*d.vzoom_token()).toUtf8()
|
||||||
|
: QByteArray();
|
||||||
return Data::StatisticalGraph{
|
return Data::StatisticalGraph{
|
||||||
StatisticalChartFromJSON(qs(d.vjson().data().vdata()).toUtf8()),
|
StatisticalChartFromJSON(qs(d.vjson().data().vdata()).toUtf8()),
|
||||||
|
zoomToken,
|
||||||
};
|
};
|
||||||
}, [&](const MTPDstatsGraphAsync &data) {
|
}, [&](const MTPDstatsGraphAsync &data) {
|
||||||
return Data::StatisticalGraph{ Data::StatisticalChart() };
|
return Data::StatisticalGraph{
|
||||||
|
.zoomToken = qs(data.vtoken()).toUtf8(),
|
||||||
|
};
|
||||||
}, [&](const MTPDstatsGraphError &data) {
|
}, [&](const MTPDstatsGraphError &data) {
|
||||||
return Data::StatisticalGraph{ Data::StatisticalChart() };
|
return Data::StatisticalGraph{ Data::StatisticalChart() };
|
||||||
});
|
});
|
||||||
|
@ -135,6 +141,34 @@ rpl::producer<rpl::no_value, QString> Statistics::request(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpl::producer<Data::StatisticalGraph, QString> Statistics::requestZoom(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const QString &token,
|
||||||
|
float64 x) {
|
||||||
|
return [=](auto consumer) {
|
||||||
|
auto lifetime = rpl::lifetime();
|
||||||
|
const auto channel = peer->asChannel();
|
||||||
|
if (!channel) {
|
||||||
|
return lifetime;
|
||||||
|
}
|
||||||
|
|
||||||
|
_api.request(MTPstats_LoadAsyncGraph(
|
||||||
|
MTP_flags(x
|
||||||
|
? MTPstats_LoadAsyncGraph::Flag::f_x
|
||||||
|
: MTPstats_LoadAsyncGraph::Flag(0)),
|
||||||
|
MTP_string(token),
|
||||||
|
MTP_long(x)
|
||||||
|
)).done([=](const MTPStatsGraph &result) {
|
||||||
|
consumer.put_next(StatisticalGraphFromTL(result));
|
||||||
|
consumer.put_done();
|
||||||
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
consumer.put_error_copy(error.type());
|
||||||
|
}).send();
|
||||||
|
|
||||||
|
return lifetime;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
Data::ChannelStatistics Statistics::channelStats() const {
|
Data::ChannelStatistics Statistics::channelStats() const {
|
||||||
return _channelStats;
|
return _channelStats;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,10 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<rpl::no_value, QString> request(
|
[[nodiscard]] rpl::producer<rpl::no_value, QString> request(
|
||||||
not_null<PeerData*> peer);
|
not_null<PeerData*> peer);
|
||||||
|
[[nodiscard]] rpl::producer<Data::StatisticalGraph, QString> requestZoom(
|
||||||
|
not_null<PeerData*> peer,
|
||||||
|
const QString &token,
|
||||||
|
float64 x);
|
||||||
|
|
||||||
[[nodiscard]] Data::ChannelStatistics channelStats() const;
|
[[nodiscard]] Data::ChannelStatistics channelStats() const;
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,7 @@ struct StatisticalChart {
|
||||||
|
|
||||||
struct StatisticalGraph final {
|
struct StatisticalGraph final {
|
||||||
StatisticalChart chart;
|
StatisticalChart chart;
|
||||||
|
QString zoomToken;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StatisticalValue final {
|
struct StatisticalValue final {
|
||||||
|
|
Loading…
Reference in New Issue