From a4ac00acbd7870c19032f65205e723523133486f Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 15 Aug 2024 10:14:30 +0200 Subject: [PATCH] Allow sending star reactions to discussion roots. --- Telegram/SourceFiles/history/history_item.cpp | 2 +- .../SourceFiles/history/view/history_view_list_widget.cpp | 8 ++++++++ .../SourceFiles/payments/payments_reaction_process.cpp | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index cebb425ca..70b38bcf2 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -2533,7 +2533,7 @@ bool HistoryItem::canReact() const { void HistoryItem::addPaidReaction(int count, bool anonymous) { Expects(count >= 0); - Expects(_history->peer->isBroadcast()); + Expects(_history->peer->isBroadcast() || isDiscussionPost()); if (!_reactions) { _reactions = std::make_unique(this); diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 97aa4e81f..a84464bc3 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -36,6 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_who_reacted.h" #include "api/api_views.h" #include "layout/layout_selection.h" +#include "payments/payments_reaction_process.h" #include "window/section_widget.h" #include "window/window_adaptive.h" #include "window/window_session_controller.h" @@ -2801,6 +2802,13 @@ void ListWidget::reactionChosen(ChosenReaction reaction) { const auto item = session().data().message(reaction.context); if (!item) { return; + } else if (reaction.id.paid()) { + Payments::ShowPaidReactionDetails( + controller(), + item, + viewForItem(item), + HistoryReactionSource::Selector); + return; } else if (_delegate->listShowReactPremiumError(item, reaction.id)) { if (_menu) { _menu->hideMenu(); diff --git a/Telegram/SourceFiles/payments/payments_reaction_process.cpp b/Telegram/SourceFiles/payments/payments_reaction_process.cpp index 57de72432..d66063b33 100644 --- a/Telegram/SourceFiles/payments/payments_reaction_process.cpp +++ b/Telegram/SourceFiles/payments/payments_reaction_process.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/send_credits_box.h" // CreditsEmojiSmall. #include "core/ui_integration.h" // MarkedTextContext. #include "data/components/credits.h" +#include "data/data_channel.h" #include "data/data_message_reactions.h" #include "data/data_session.h" #include "data/data_user.h" @@ -120,7 +121,8 @@ void ShowPaidReactionDetails( not_null item, HistoryView::Element *view, HistoryReactionSource source) { - Expects(item->history()->peer->isBroadcast()); + Expects(item->history()->peer->isBroadcast() + || item->isDiscussionPost()); const auto show = controller->uiShow(); const auto itemId = item->fullId(); @@ -229,11 +231,13 @@ void ShowPaidReactionDetails( } ranges::sort(top, ranges::greater(), &Ui::PaidReactionTop::count); + const auto linked = item->discussionPostOriginalSender(); + const auto channel = (linked ? linked : item->history()->peer.get()); state->selectBox = show->show(Ui::MakePaidReactionBox({ .chosen = chosen, .max = max, .top = std::move(top), - .channel = item->history()->peer->name(), + .channel = channel->name(), .submit = std::move(submitText), .balanceValue = session->credits().balanceValue(), .send = [=](int count, bool anonymous) {