mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added initial support of channel cpm from earn channel api.
This commit is contained in:
parent
9c52f245ac
commit
32a3952524
3 changed files with 20 additions and 8 deletions
|
@ -773,7 +773,19 @@ rpl::producer<rpl::no_value, QString> EarnStatistics::request() {
|
||||||
|
|
||||||
requestBoosts({}, [=](Data::EarnHistorySlice &&slice) {
|
requestBoosts({}, [=](Data::EarnHistorySlice &&slice) {
|
||||||
_data.firstHistorySlice = std::move(slice);
|
_data.firstHistorySlice = std::move(slice);
|
||||||
consumer.put_done();
|
|
||||||
|
api().request(
|
||||||
|
MTPchannels_GetFullChannel(channel()->inputChannel)
|
||||||
|
).done([=](const MTPmessages_ChatFull &result) {
|
||||||
|
result.data().vfull_chat().match([&](
|
||||||
|
const MTPDchannelFull &d) {
|
||||||
|
_data.minCpm = d.vsponsored_min_cpm().value_or(-1);
|
||||||
|
}, [](const auto &) {
|
||||||
|
});
|
||||||
|
consumer.put_done();
|
||||||
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
consumer.put_error_copy(error.type());
|
||||||
|
}).send();
|
||||||
});
|
});
|
||||||
}).fail([=](const MTP::Error &error) {
|
}).fail([=](const MTP::Error &error) {
|
||||||
consumer.put_error_copy(error.type());
|
consumer.put_error_copy(error.type());
|
||||||
|
|
|
@ -202,6 +202,7 @@ struct EarnStatistics final {
|
||||||
EarnInt availableBalance = 0;
|
EarnInt availableBalance = 0;
|
||||||
EarnInt overallRevenue = 0;
|
EarnInt overallRevenue = 0;
|
||||||
float64 usdRate = 0.;
|
float64 usdRate = 0.;
|
||||||
|
int minCpm = -1;
|
||||||
|
|
||||||
EarnHistorySlice firstHistorySlice;
|
EarnHistorySlice firstHistorySlice;
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,20 +49,20 @@ namespace {
|
||||||
|
|
||||||
using EarnInt = Data::EarnInt;
|
using EarnInt = Data::EarnInt;
|
||||||
|
|
||||||
|
constexpr auto kMultiplier = EarnInt(1000000000);
|
||||||
constexpr auto kMinorPartLength = 9;
|
constexpr auto kMinorPartLength = 9;
|
||||||
constexpr auto kZero = QChar('0');
|
constexpr auto kZero = QChar('0');
|
||||||
constexpr auto kDot = QChar('.');
|
constexpr auto kDot = QChar('.');
|
||||||
|
|
||||||
[[nodiscard]] QString MajorPart(EarnInt value) {
|
[[nodiscard]] QString MajorPart(EarnInt value) {
|
||||||
const auto string = QString::number(value);
|
const auto string = QString::number(value);
|
||||||
return (string.size() < kMinorPartLength)
|
const auto diff = int(string.size()) - kMinorPartLength;
|
||||||
? QString(kZero)
|
return (diff <= 0) ? QString(kZero) : string.mid(0, diff);
|
||||||
: string.mid(0, kMinorPartLength);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] QString MinorPart(EarnInt value) {
|
[[nodiscard]] QString MinorPart(EarnInt value) {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return QString(kDot) + kZero;
|
return QString(kDot) + kZero + kZero;
|
||||||
}
|
}
|
||||||
const auto string = QString::number(value);
|
const auto string = QString::number(value);
|
||||||
const auto diff = int(string.size()) - kMinorPartLength;
|
const auto diff = int(string.size()) - kMinorPartLength;
|
||||||
|
@ -86,7 +86,6 @@ constexpr auto kDot = QChar('.');
|
||||||
|
|
||||||
[[nodiscard]] QString ToUsd(EarnInt value, float64 rate) {
|
[[nodiscard]] QString ToUsd(EarnInt value, float64 rate) {
|
||||||
constexpr auto kApproximately = QChar(0x2248);
|
constexpr auto kApproximately = QChar(0x2248);
|
||||||
constexpr auto kMultiplier = EarnInt(1000000000);
|
|
||||||
const auto multiplier = EarnInt(rate * kMultiplier);
|
const auto multiplier = EarnInt(rate * kMultiplier);
|
||||||
const auto result = (value * multiplier) / kMultiplier;
|
const auto result = (value * multiplier) / kMultiplier;
|
||||||
return QString(kApproximately)
|
return QString(kApproximately)
|
||||||
|
@ -857,7 +856,7 @@ void InnerWidget::fill() {
|
||||||
const auto right = Ui::CreateChild<Ui::FlatLabel>(
|
const auto right = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
line,
|
line,
|
||||||
st::defaultFlatLabel);
|
st::defaultFlatLabel);
|
||||||
addEmojiToMajor(right, kMaxCPM);
|
addEmojiToMajor(right, kMaxCPM * kMultiplier);
|
||||||
const auto slider = Ui::CreateChild<Ui::MediaSlider>(
|
const auto slider = Ui::CreateChild<Ui::MediaSlider>(
|
||||||
line,
|
line,
|
||||||
st::settingsScale);
|
st::settingsScale);
|
||||||
|
@ -913,7 +912,7 @@ void InnerWidget::fill() {
|
||||||
? std::make_optional(activeColor)
|
? std::make_optional(activeColor)
|
||||||
: std::nullopt);
|
: std::nullopt);
|
||||||
};
|
};
|
||||||
const auto current = kMaxCPM / 2;
|
const auto current = std::max(0, data.minCpm);
|
||||||
slider->setPseudoDiscrete(
|
slider->setPseudoDiscrete(
|
||||||
kMaxCPM + 1,
|
kMaxCPM + 1,
|
||||||
[=](int index) { return index; },
|
[=](int index) { return index; },
|
||||||
|
|
Loading…
Add table
Reference in a new issue