From 53927502af9a5fa3bf8b8843b254f587b2e4a6d1 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 17 Oct 2025 13:26:51 +0300 Subject: [PATCH] Added gift button to action buttons in profile top bar. --- Telegram/Resources/icons/profile/gift.svg | 3 ++ Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/info/info.style | 1 + .../info/profile/info_profile_top_bar.cpp | 28 +++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 Telegram/Resources/icons/profile/gift.svg diff --git a/Telegram/Resources/icons/profile/gift.svg b/Telegram/Resources/icons/profile/gift.svg new file mode 100644 index 0000000000..0d6880abee --- /dev/null +++ b/Telegram/Resources/icons/profile/gift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index ae12ca141c..32b18ce789 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -1675,6 +1675,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_profile_action_short_unmute" = "Unmute"; "lng_profile_action_short_call" = "Call"; "lng_profile_action_short_discuss" = "Discuss"; +"lng_profile_action_short_gift" = "Gift"; "lng_media_type_photos" = "Photos"; "lng_media_type_gifs" = "GIFs"; diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index 8f81b4d8d0..7f2265c3cb 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -415,6 +415,7 @@ infoProfileTopBarActionMessage: icon{{ "profile/message-22x22", premiumButtonFg infoProfileTopBarActionMute: icon{{ "profile/mute-22x22", premiumButtonFg }}; infoProfileTopBarActionUnmute: icon{{ "profile/unmute-22x22", premiumButtonFg }}; infoProfileTopBarActionCall: icon{{ "profile/call-22x22", premiumButtonFg }}; +infoProfileTopBarActionGift: icon{{ "profile/gift-22x22", premiumButtonFg }}; infoMinimalWidth: 324px; infoDesiredWidth: 392px; diff --git a/Telegram/SourceFiles/info/profile/info_profile_top_bar.cpp b/Telegram/SourceFiles/info/profile/info_profile_top_bar.cpp index 336a5eeafb..81797f007f 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_top_bar.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_top_bar.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer_rpl.h" #include "base/timer.h" #include "base/unixtime.h" +#include "boxes/star_gift_box.h" #include "calls/calls_instance.h" #include "chat_helpers/stickers_lottie.h" #include "core/application.h" @@ -512,6 +513,33 @@ void TopBar::setupActions(not_null controller) { _actions->add(discuss); buttons.push_back(discuss); } + { + const auto channel = peer->asBroadcast(); + if (!user && !channel) { + } else if (user + && (user->isInaccessible() + || user->isSelf() + || user->isBot() + || user->isServiceUser() + || user->isNotificationsUser() + || user->isRepliesChat() + || user->isVerifyCodes() + || !user->session().premiumCanBuy())) { + } else if (channel + && (channel->isForbidden() || !channel->stargiftsAvailable())) { + } else { + const auto navigation = controller->parentController(); + const auto giftButton = Ui::CreateChild( + this, + tr::lng_profile_action_short_gift(tr::now), + st::infoProfileTopBarActionGift); + giftButton->setClickedCallback([=] { + Ui::ShowStarGiftBox(navigation, peer); + }); + _actions->add(giftButton); + buttons.push_back(giftButton); + } + } _edgeColor.value() | rpl::map(mapped) | rpl::start_with_next([=]( QColor c) { for (const auto &button : buttons) {