From 47506d70ed40cd2e69541169356809272b69c536 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 21 Mar 2025 13:43:28 +0300 Subject: [PATCH] Simplified signature of ResolveQuickDialogLottieIconName. --- .../dialogs/dialogs_inner_widget.cpp | 16 ++++--- .../dialogs/dialogs_quick_action.cpp | 48 ++++++++----------- .../dialogs/dialogs_quick_action.h | 4 +- 3 files changed, 32 insertions(+), 36 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 783d3d3272..c18b998478 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -1944,13 +1944,14 @@ bool InnerWidget::addQuickActionRipple( if (!history) { return false; } + const auto type = ResolveQuickDialogLabel(history, action, _filterId); + if (type == Dialogs::Ui::QuickDialogActionLabel::Disabled) { + return false; + } const auto key = history->peer->id.value; const auto context = ensureQuickAction(key); - auto name = ResolveQuickDialogLottieIconName( - history->peer, - action, - _filterId); + auto name = ResolveQuickDialogLottieIconName(type); context->icon = Lottie::MakeIcon({ .name = std::move(name), .sizeOverride = Size(st::dialogsQuickActionSize), @@ -5156,8 +5157,11 @@ void InnerWidget::prepareQuickAction( Expects(key != 0); const auto context = ensureQuickAction(key); - const auto peer = session().data().peer(PeerId(key)); - auto name = ResolveQuickDialogLottieIconName(peer, action, _filterId); + auto name = ResolveQuickDialogLottieIconName( + ResolveQuickDialogLabel( + session().data().history(PeerId(key)), + action, + _filterId)); context->icon = Lottie::MakeIcon({ .name = std::move(name), .sizeOverride = Size(st::dialogsQuickActionSize), diff --git a/Telegram/SourceFiles/dialogs/dialogs_quick_action.cpp b/Telegram/SourceFiles/dialogs/dialogs_quick_action.cpp index 4c7a6d8e6c..e1092d5c9d 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_quick_action.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_quick_action.cpp @@ -95,35 +95,29 @@ void PerformQuickDialogAction( } } -QString ResolveQuickDialogLottieIconName( - not_null peer, - Ui::QuickDialogAction action, - FilterId filterId) { - if (action == Dialogs::Ui::QuickDialogAction::Mute) { - const auto history = peer->owner().history(peer); - const auto isMuted = rpl::variable( - MuteMenu::ThreadDescriptor(history).isMutedValue()).current(); - return isMuted ? u"swipe_unmute"_q : u"swipe_mute"_q; - } else if (action == Dialogs::Ui::QuickDialogAction::Pin) { - const auto history = peer->owner().history(peer); - const auto entry = (Dialogs::Entry*)(history); - return entry->isPinnedDialog(filterId) - ? u"swipe_unpin"_q - : u"swipe_pin"_q; - } else if (action == Dialogs::Ui::QuickDialogAction::Read) { - const auto history = peer->owner().history(peer); - return Window::IsUnreadThread(history) - ? u"swipe_read"_q - : u"swipe_unread"_q; - } else if (action == Dialogs::Ui::QuickDialogAction::Archive) { - const auto history = peer->owner().history(peer); - return Window::IsArchived(history) - ? u"swipe_unarchive"_q - : u"swipe_archive"_q; - } else if (action == Dialogs::Ui::QuickDialogAction::Delete) { +QString ResolveQuickDialogLottieIconName(Ui::QuickDialogActionLabel action) { + switch (action) { + case Ui::QuickDialogActionLabel::Mute: + return u"swipe_mute"_q; + case Ui::QuickDialogActionLabel::Unmute: + return u"swipe_unmute"_q; + case Ui::QuickDialogActionLabel::Pin: + return u"swipe_pin"_q; + case Ui::QuickDialogActionLabel::Unpin: + return u"swipe_unpin"_q; + case Ui::QuickDialogActionLabel::Read: + return u"swipe_read"_q; + case Ui::QuickDialogActionLabel::Unread: + return u"swipe_unread"_q; + case Ui::QuickDialogActionLabel::Archive: + return u"swipe_archive"_q; + case Ui::QuickDialogActionLabel::Unarchive: + return u"swipe_unarchive"_q; + case Ui::QuickDialogActionLabel::Delete: return u"swipe_delete"_q; + default: + return u"swipe_disabled"_q; } - return u"swipe_disabled"_q; } Ui::QuickDialogActionLabel ResolveQuickDialogLabel( diff --git a/Telegram/SourceFiles/dialogs/dialogs_quick_action.h b/Telegram/SourceFiles/dialogs/dialogs_quick_action.h index 3d5cb80ddf..e8d53c06b7 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_quick_action.h +++ b/Telegram/SourceFiles/dialogs/dialogs_quick_action.h @@ -32,9 +32,7 @@ void PerformQuickDialogAction( FilterId filterId); [[nodiscard]] QString ResolveQuickDialogLottieIconName( - not_null peer, - Ui::QuickDialogAction action, - FilterId filterId); + Ui::QuickDialogActionLabel action); [[nodiscard]] Ui::QuickDialogActionLabel ResolveQuickDialogLabel( not_null history,