From 3c266b6dc417d3e4d438ed1101241beb744d97f1 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 26 Mar 2024 18:06:44 +0300 Subject: [PATCH] Moved out data structures for channel earn to td_ui. --- Telegram/SourceFiles/api/api_statistics.h | 1 + Telegram/SourceFiles/data/data_channel_earn.h | 70 +++++++++++++++++++ Telegram/SourceFiles/data/data_statistics.h | 52 -------------- .../earn/info_earn_inner_widget.cpp | 7 +- .../earn/info_earn_inner_widget.h | 2 +- .../earn/info_earn_widget.h | 2 +- .../statistics/view/chart_rulers_view.cpp | 4 +- .../widgets/point_details_widget.cpp | 4 +- Telegram/cmake/td_ui.cmake | 1 + 9 files changed, 82 insertions(+), 61 deletions(-) create mode 100644 Telegram/SourceFiles/data/data_channel_earn.h diff --git a/Telegram/SourceFiles/api/api_statistics.h b/Telegram/SourceFiles/api/api_statistics.h index 2643ae1bc..cf48d3cf2 100644 --- a/Telegram/SourceFiles/api/api_statistics.h +++ b/Telegram/SourceFiles/api/api_statistics.h @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer.h" #include "data/data_boosts.h" +#include "data/data_channel_earn.h" #include "data/data_statistics.h" #include "mtproto/sender.h" diff --git a/Telegram/SourceFiles/data/data_channel_earn.h b/Telegram/SourceFiles/data/data_channel_earn.h new file mode 100644 index 000000000..7b47eff80 --- /dev/null +++ b/Telegram/SourceFiles/data/data_channel_earn.h @@ -0,0 +1,70 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "data/data_statistics_chart.h" + +#include + +namespace Data { + +using EarnInt = uint64; + +constexpr auto kEarnMultiplier = EarnInt(1000000000); + +struct EarnHistoryEntry final { + enum class Type { + In, + Out, + Return, + }; + + enum class Status { + Success, + Failed, + Pending, + }; + + Type type; + Status status; + + EarnInt amount = 0; + QDateTime date; + QDateTime dateTo; + + QString provider; + + QDateTime successDate; + QString successLink; + +}; + +struct EarnHistorySlice final { + using OffsetToken = int; + std::vector list; + int total = 0; + bool allLoaded = false; + OffsetToken token; +}; + +struct EarnStatistics final { + explicit operator bool() const { + return !!usdRate; + } + Data::StatisticalGraph topHoursGraph; + Data::StatisticalGraph revenueGraph; + EarnInt currentBalance = 0; + EarnInt availableBalance = 0; + EarnInt overallRevenue = 0; + float64 usdRate = 0.; + int minCpm = -1; + + EarnHistorySlice firstHistorySlice; +}; + +} // namespace Data diff --git a/Telegram/SourceFiles/data/data_statistics.h b/Telegram/SourceFiles/data/data_statistics.h index 9746b067e..9d2b2c74a 100644 --- a/Telegram/SourceFiles/data/data_statistics.h +++ b/Telegram/SourceFiles/data/data_statistics.h @@ -155,56 +155,4 @@ struct PublicForwardsSlice final { OffsetToken token; }; -using EarnInt = uint64; - -struct EarnHistoryEntry final { - enum class Type { - In, - Out, - Return, - }; - - enum class Status { - Success, - Failed, - Pending, - }; - - Type type; - Status status; - - EarnInt amount = 0; - QDateTime date; - QDateTime dateTo; - - QString provider; - - QDateTime successDate; - QString successLink; - -}; - -struct EarnHistorySlice final { - using OffsetToken = int; - std::vector list; - int total = 0; - bool allLoaded = false; - OffsetToken token; -}; - -struct EarnStatistics final { - explicit operator bool() const { - return !!usdRate; - } - Data::StatisticalGraph topHoursGraph; - Data::StatisticalGraph revenueGraph; - EarnInt currentBalance = 0; - EarnInt availableBalance = 0; - EarnInt overallRevenue = 0; - float64 usdRate = 0.; - int minCpm = -1; - - EarnHistorySlice firstHistorySlice; -}; - } // namespace Data diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp index d81213f35..90277d90a 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp @@ -49,7 +49,6 @@ namespace { using EarnInt = Data::EarnInt; -constexpr auto kMultiplier = EarnInt(1000000000); constexpr auto kMinorPartLength = 9; constexpr auto kZero = QChar('0'); constexpr auto kDot = QChar('.'); @@ -86,8 +85,8 @@ constexpr auto kDot = QChar('.'); [[nodiscard]] QString ToUsd(EarnInt value, float64 rate) { constexpr auto kApproximately = QChar(0x2248); - const auto multiplier = EarnInt(rate * kMultiplier); - const auto result = (value * multiplier) / kMultiplier; + const auto multiplier = EarnInt(rate * Data::kEarnMultiplier); + const auto result = (value * multiplier) / Data::kEarnMultiplier; return QString(kApproximately) + QChar('$') + MajorPart(result) @@ -856,7 +855,7 @@ void InnerWidget::fill() { const auto right = Ui::CreateChild( line, st::defaultFlatLabel); - addEmojiToMajor(right, kMaxCPM * kMultiplier); + addEmojiToMajor(right, kMaxCPM * Data::kEarnMultiplier); const auto slider = Ui::CreateChild( line, st::settingsScale); diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h index 472badfbf..69d1587d8 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "data/data_statistics.h" +#include "data/data_channel_earn.h" #include "ui/widgets/scroll_area.h" #include "ui/wrap/vertical_layout.h" diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h index 3c7540954..73b373769 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "data/data_statistics.h" +#include "data/data_channel_earn.h" #include "info/info_content_widget.h" namespace Info::ChannelEarn { diff --git a/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp b/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp index 89864dec9..859db9e1a 100644 --- a/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp +++ b/Telegram/SourceFiles/statistics/view/chart_rulers_view.cpp @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "statistics/view/chart_rulers_view.h" -#include "data/data_statistics_chart.h" +#include "data/data_channel_earn.h" // Data::kEarnMultiplier. #include "statistics/chart_lines_filter_controller.h" #include "statistics/statistics_common.h" #include "styles/style_basic.h" @@ -142,7 +142,7 @@ void ChartRulersView::add(Limits newHeight, bool animated) { newHeight.min, true, _isDouble ? _scaledLineRatio : 0., - _currencyIcon ? 1000000000 : 0); + _currencyIcon ? Data::kEarnMultiplier : 0); if (_isDouble) { const auto &font = st::statisticsDetailsBottomCaptionStyle.font; for (auto &line : newLinesData.lines) { diff --git a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp index e31ecb99c..d30cfa7d6 100644 --- a/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp +++ b/Telegram/SourceFiles/statistics/widgets/point_details_widget.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "statistics/widgets/point_details_widget.h" +#include "data/data_channel_earn.h" // Data::kEarnMultiplier. #include "statistics/statistics_common.h" #include "statistics/statistics_format_values.h" #include "statistics/view/stack_linear_chart_common.h" @@ -270,6 +271,7 @@ void PointDetailsWidget::setXIndex(int xIndex) { nullptr, { float64(xIndex), float64(xIndex) }).parts : std::vector(); + const auto multiplier = float64(Data::kEarnMultiplier); for (auto i = 0; i < _chartData.lines.size(); i++) { const auto &dataLine = _chartData.lines[i]; auto textLine = Line(); @@ -281,7 +283,7 @@ void PointDetailsWidget::setXIndex(int xIndex) { textLine.value.setText( _textStyle, _chartData.isCurrency - ? QString::number(dataLine.y[xIndex] / float64(1000000000)) + ? QString::number(dataLine.y[xIndex] / multiplier) : QString("%L1").arg(dataLine.y[xIndex])); hasPositiveValues |= (dataLine.y[xIndex] > 0); textLine.valueColor = QColor(dataLine.color); diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index aaad4c10c..e52a53bf4 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -79,6 +79,7 @@ PRIVATE data/data_birthday.cpp data/data_birthday.h + data/data_channel_earn.h data/data_statistics_chart.cpp data/data_statistics_chart.h data/data_subscription_option.h