From 65d6636a4199b788d222353b68344a6273610bc1 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 9 Dec 2024 22:00:39 +0400 Subject: [PATCH] Add special toast title for anonymous stars. --- Telegram/Resources/langs/lang.strings | 2 ++ Telegram/SourceFiles/history/history_item.cpp | 31 +++++++++++++------ Telegram/SourceFiles/history/history_item.h | 1 + .../view/history_view_paid_reaction_toast.cpp | 21 ++++++++++--- .../view/history_view_paid_reaction_toast.h | 2 ++ 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 0a156840f..23472b8c9 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -3806,6 +3806,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_paid_react_agree_link" = "Terms of Service"; "lng_paid_react_toast#one" = "Star Sent!"; "lng_paid_react_toast#other" = "Stars Sent!"; +"lng_paid_react_toast_anonymous#one" = "Star sent anonymously!"; +"lng_paid_react_toast_anonymous#other" = "Stars sent anonymously!"; "lng_paid_react_toast_text#one" = "You reacted with **{count} Star**."; "lng_paid_react_toast_text#other" = "You reacted with **{count} Stars**."; "lng_paid_react_undo" = "Undo"; diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 7b08484f4..7dceb8618 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -2694,6 +2694,10 @@ int HistoryItem::reactionsPaidScheduled() const { return _reactions ? _reactions->scheduledPaid() : 0; } +bool HistoryItem::reactionsLocalAnonymous() const { + return _reactions ? _reactions->localPaidAnonymous() : false; +} + bool HistoryItem::reactionsAreTags() const { return _flags & MessageFlag::ReactionsAreTags; } @@ -5337,19 +5341,28 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) { &_history->session(), amount, currency); - result.links.push_back(peer->createOpenLink()); - result.text = isSelf - ? tr::lng_action_gift_sent(tr::now, - lt_cost, - cost, - Ui::Text::WithEntities) - : tr::lng_action_gift_received( + const auto anonymous = _from->isServiceUser(); + if (anonymous) { + result.text = tr::lng_action_gift_received_anonymous( tr::now, - lt_user, - Ui::Text::Link(peer->shortName(), 1), // Link 1. lt_cost, cost, Ui::Text::WithEntities); + } else { + result.links.push_back(peer->createOpenLink()); + result.text = isSelf + ? tr::lng_action_gift_sent(tr::now, + lt_cost, + cost, + Ui::Text::WithEntities) + : tr::lng_action_gift_received( + tr::now, + lt_user, + Ui::Text::Link(peer->shortName(), 1), // Link 1. + lt_cost, + cost, + Ui::Text::WithEntities); + } return result; }; diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 63d0e0bd8..a5b633df0 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -471,6 +471,7 @@ public: [[nodiscard]] auto topPaidReactionsWithLocal() const -> std::vector; [[nodiscard]] int reactionsPaidScheduled() const; + [[nodiscard]] bool reactionsLocalAnonymous() const; [[nodiscard]] bool canViewReactions() const; [[nodiscard]] std::vector chosenReactions() const; [[nodiscard]] Data::ReactionId lookupUnreadReaction( diff --git a/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.cpp b/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.cpp index 566b1f72d..d79ec1005 100644 --- a/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.cpp +++ b/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.cpp @@ -163,6 +163,7 @@ PaidReactionToast::~PaidReactionToast() { bool PaidReactionToast::maybeShowFor(not_null item) { const auto count = item->reactionsPaidScheduled(); + const auto anonymous = item->reactionsLocalAnonymous(); const auto at = _owner->reactions().sendingScheduledPaidAt(item); if (!count || !at) { return false; @@ -172,13 +173,14 @@ bool PaidReactionToast::maybeShowFor(not_null item) { if (at <= crl::now() + ignore) { return false; } - showFor(item->fullId(), count, at - ignore, total); + showFor(item->fullId(), count, anonymous, at - ignore, total); return true; } void PaidReactionToast::showFor( FullMsgId itemId, int count, + bool anonymous, crl::time finish, crl::time total) { const auto old = _weak.get(); @@ -186,6 +188,7 @@ void PaidReactionToast::showFor( if (i != end(_stack)) { if (old && i + 1 == end(_stack)) { _count = count; + _anonymous = anonymous; _timeFinish = finish; return; } @@ -199,14 +202,22 @@ void PaidReactionToast::showFor( _hiding.push_back(base::take(_weak)); } _count.reset(); + _anonymous.reset(); _timeFinish.reset(); _count = count; + _anonymous = anonymous; _timeFinish = finish; auto text = rpl::combine( - tr::lng_paid_react_toast( - lt_count, - _count.value() | tr::to_count(), - Ui::Text::Bold), + rpl::conditional( + _anonymous.value(), + tr::lng_paid_react_toast_anonymous( + lt_count, + _count.value() | tr::to_count(), + Ui::Text::Bold), + tr::lng_paid_react_toast( + lt_count, + _count.value() | tr::to_count(), + Ui::Text::Bold)), tr::lng_paid_react_toast_text( lt_count_decimal, _count.value() | tr::to_count(), diff --git a/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.h b/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.h index 593fc0208..080a62c32 100644 --- a/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.h +++ b/Telegram/SourceFiles/history/view/history_view_paid_reaction_toast.h @@ -40,6 +40,7 @@ private: void showFor( FullMsgId itemId, int count, + bool anonymous, crl::time left, crl::time total); @@ -53,6 +54,7 @@ private: base::weak_ptr _weak; std::vector> _hiding; rpl::variable _count; + rpl::variable _anonymous; rpl::variable _timeFinish; std::vector _stack;