From a23dca080a431988a41de032c0dd5c71dd4155df Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 6 Jan 2025 18:05:57 +0400 Subject: [PATCH] Always show "View" button in gifts. --- .../SourceFiles/boxes/gift_premium_box.cpp | 2 +- .../view/media/history_view_premium_gift.cpp | 5 +- .../view/media/history_view_unique_gift.cpp | 52 ++++++++----------- .../settings/settings_credits_graphics.cpp | 12 +++-- Telegram/SourceFiles/ui/chat/chat.style | 1 - 5 files changed, 33 insertions(+), 39 deletions(-) diff --git a/Telegram/SourceFiles/boxes/gift_premium_box.cpp b/Telegram/SourceFiles/boxes/gift_premium_box.cpp index 77ff25e84..2b396aec4 100644 --- a/Telegram/SourceFiles/boxes/gift_premium_box.cpp +++ b/Telegram/SourceFiles/boxes/gift_premium_box.cpp @@ -1205,7 +1205,7 @@ void AddStarGiftTable( const auto unique = entry.uniqueGift.get(); const auto selfBareId = session->userPeerId().value; const auto giftToSelf = (peerId == session->userPeerId()) - && (!entry.fromGiftsList || entry.bareGiftOwnerId == selfBareId); + && (entry.in || entry.bareGiftOwnerId == selfBareId); if (unique) { const auto ownerId = PeerId(entry.bareGiftOwnerId); const auto transfer = entry.in diff --git a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp index cb2f23818..0a17cca84 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_premium_gift.cpp @@ -185,7 +185,7 @@ TextWithEntities PremiumGift::subtitle() { rpl::producer PremiumGift::button() { return (starGift() && outgoingGift()) - ? nullptr + ? tr::lng_sticker_premium_view() : creditsPrize() ? tr::lng_view_button_giftcode() : (starGift() && _data.starsUpgradedBySender && !_data.upgraded) @@ -200,9 +200,6 @@ bool PremiumGift::buttonMinistars() { } ClickHandlerPtr PremiumGift::createViewLink() { - if (starGift() && outgoingGift()) { - return nullptr; - } const auto from = _gift->from(); const auto itemId = _parent->data()->fullId(); const auto peer = _parent->history()->peer; diff --git a/Telegram/SourceFiles/history/view/media/history_view_unique_gift.cpp b/Telegram/SourceFiles/history/view/media/history_view_unique_gift.cpp index dc79e6cbe..a41e867d0 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_unique_gift.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_unique_gift.cpp @@ -440,8 +440,6 @@ auto GenerateUniqueGiftMedia( gift->backdrop.textColor, st::chatUniqueTextPadding); - const auto withButton = !outgoing || item->history()->peer->isSelf(); - auto attributes = std::vector{ { tr::lng_gift_unique_model(tr::now), gift->model.name }, { tr::lng_gift_unique_backdrop(tr::now), gift->backdrop.name }, @@ -449,38 +447,34 @@ auto GenerateUniqueGiftMedia( }; push(std::make_unique( std::move(attributes), - (withButton - ? st::chatUniqueTextPadding - : st::chatUniqueTableAtBottomPadding), + st::chatUniqueTextPadding, gift->backdrop.textColor)); - if (withButton) { - const auto itemId = parent->data()->fullId(); - auto link = std::make_shared([=]( - ClickContext context) { - const auto my = context.other.value(); - if (const auto controller = my.sessionWindow.get()) { - const auto owner = &controller->session().data(); - if (const auto item = owner->message(itemId)) { - if (const auto media = item->media()) { - if (const auto gift = media->gift()) { - controller->show(Box( - Settings::StarGiftViewBox, - controller, - *gift, - item)); - } + const auto itemId = parent->data()->fullId(); + auto link = std::make_shared([=]( + ClickContext context) { + const auto my = context.other.value(); + if (const auto controller = my.sessionWindow.get()) { + const auto owner = &controller->session().data(); + if (const auto item = owner->message(itemId)) { + if (const auto media = item->media()) { + if (const auto gift = media->gift()) { + controller->show(Box( + Settings::StarGiftViewBox, + controller, + *gift, + item)); } } } - }); - push(std::make_unique( - tr::lng_sticker_premium_view(tr::now), - st::chatUniqueButtonPadding, - [=] { parent->repaint(); }, - std::move(link), - anim::with_alpha(gift->backdrop.patternColor, 0.75))); - } + } + }); + push(std::make_unique( + tr::lng_sticker_premium_view(tr::now), + st::chatUniqueButtonPadding, + [=] { parent->repaint(); }, + std::move(link), + anim::with_alpha(gift->backdrop.patternColor, 0.75))); }; } diff --git a/Telegram/SourceFiles/settings/settings_credits_graphics.cpp b/Telegram/SourceFiles/settings/settings_credits_graphics.cpp index b64762a27..fdd757525 100644 --- a/Telegram/SourceFiles/settings/settings_credits_graphics.cpp +++ b/Telegram/SourceFiles/settings/settings_credits_graphics.cpp @@ -1008,7 +1008,7 @@ void ReceiptCreditsBox( const auto selfPeerId = session->userPeerId().value; const auto giftToSelf = isStarGift && (e.barePeerId == selfPeerId) - && (!e.fromGiftsList || e.bareGiftOwnerId == selfPeerId); + && (e.in || e.bareGiftOwnerId == selfPeerId); if (!uniqueGift) { Ui::AddSkip(content); @@ -1684,17 +1684,21 @@ void StarGiftViewBox( not_null controller, const Data::GiftCode &data, not_null item) { + const auto incoming = data.upgrade ? item->out() : !item->out(); + const auto peer = item->history()->peer; + const auto fromId = incoming ? peer->id : peer->session().userPeerId(); + const auto toId = incoming ? peer->session().userPeerId() : peer->id; const auto entry = Data::CreditsHistoryEntry{ .id = data.slug, .description = data.message, .date = base::unixtime::parse(item->date()), .credits = StarsAmount(data.count), .bareMsgId = uint64(item->id.bare), - .barePeerId = item->history()->peer->id.value, + .barePeerId = fromId.value, .bareGiftStickerId = data.document ? data.document->id : 0, .bareGiftOwnerId = (data.unique ? data.unique->ownerId.value - : item->history()->session().userPeerId().value), + : toId.value), .stargiftId = data.stargiftId, .uniqueGift = data.unique, .peerType = Data::CreditsHistoryEntry::PeerType::Peer, @@ -1711,7 +1715,7 @@ void StarGiftViewBox( .savedToProfile = data.saved, .canUpgradeGift = data.upgradable, .hasGiftComment = !data.message.empty(), - .in = true, + .in = incoming, .gift = true, }; Settings::ReceiptCreditsBox( diff --git a/Telegram/SourceFiles/ui/chat/chat.style b/Telegram/SourceFiles/ui/chat/chat.style index cfd6c0400..3dda7dd8b 100644 --- a/Telegram/SourceFiles/ui/chat/chat.style +++ b/Telegram/SourceFiles/ui/chat/chat.style @@ -1217,6 +1217,5 @@ chatUniqueTitle: TextStyle(defaultTextStyle) { chatUniqueTitlePadding: margins(12px, 12px, 12px, 2px); chatUniqueTextPadding: margins(12px, 2px, 12px, 8px); chatUniqueTableSkip: 9px; -chatUniqueTableAtBottomPadding: margins(12px, 2px, 12px, 20px); chatUniqueRowSkip: 4px; chatUniqueButtonPadding: margins(12px, 4px, 12px, 16px);