diff --git a/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp b/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp index cd1d161a8..3351662ac 100644 --- a/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp +++ b/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp @@ -27,6 +27,7 @@ #include "ayu/ui/sections/edited/edited_log_section.h" #include "ayu/utils/telegram_helpers.h" #include "base/unixtime.h" +#include "history/view/history_view_context_menu.h" #include "history/view/history_view_element.h" #include "window/window_session_controller.h" @@ -113,6 +114,22 @@ void AddMessageDetailsAction(not_null menu, HistoryItem *item) { const auto media = item->media(); const auto isSticker = media && media->document() && media->document()->sticker(); + + const auto emojiPacks = HistoryView::CollectEmojiPacks(item, HistoryView::EmojiPacksSource::Message); + auto containsSingleCustomEmojiPack = emojiPacks.size() == 1; + if (!containsSingleCustomEmojiPack && emojiPacks.size() > 1) { + const auto author = emojiPacks.front().id >> 32; + auto sameAuthor = true; + for (const auto pack : emojiPacks) { + if (pack.id >> 32 != author) { + sameAuthor = false; + break; + } + } + + containsSingleCustomEmojiPack = sameAuthor; + } + const auto isForwarded = forwarded && !forwarded->story && forwarded->psaType.isEmpty(); const auto messageId = QString::number(item->id.bare); @@ -279,6 +296,18 @@ void AddMessageDetailsAction(not_null menu, HistoryItem *item) { } } } + + if (containsSingleCustomEmojiPack) { + const auto authorId = emojiPacks.front().id >> 32; + + if (authorId != 0) { + menu2->addAction(Ui::ContextActionStickerAuthor( + menu2->menu(), + &item->history()->session(), + authorId + )); + } + } }, }); } diff --git a/Telegram/SourceFiles/boxes/sticker_set_box.cpp b/Telegram/SourceFiles/boxes/sticker_set_box.cpp index a099fcfa6..f3c02c2d1 100644 --- a/Telegram/SourceFiles/boxes/sticker_set_box.cpp +++ b/Telegram/SourceFiles/boxes/sticker_set_box.cpp @@ -554,9 +554,9 @@ void StickerSetBox::updateButtons() { ? tr::lng_stickers_copied_emoji(tr::now) : tr::lng_stickers_copied(tr::now)); }; - const auto addAuthorPack = [=](const std::shared_ptr> &menu) + const auto addPackOwner = [=](const std::shared_ptr> &menu) { - if (type == Data::StickersType::Stickers) { + if (type == Data::StickersType::Stickers || type == Data::StickersType::Emoji) { const auto pointer = Ui::MakeWeak(this); (*menu)->addAction( tr::ayu_MessageDetailsPackOwnerPC(tr::now), @@ -636,7 +636,7 @@ void StickerSetBox::updateButtons() { : tr::lng_stickers_share_pack)(tr::now), [=] { share(); closeBox(); }, &st::menuIconShare); - addAuthorPack(menu); + addPackOwner(menu); (*menu)->popup(QCursor::pos()); return true; }); @@ -686,7 +686,7 @@ void StickerSetBox::updateButtons() { archive, &st::menuIconArchive); } - addAuthorPack(menu); + addPackOwner(menu); (*menu)->popup(QCursor::pos()); return true; });