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) {