feat: emoji pack author

This commit is contained in:
AlexeyZavar 2024-06-05 04:32:56 +03:00
parent b5c769196a
commit c86ea4807a
2 changed files with 33 additions and 4 deletions

View file

@ -27,6 +27,7 @@
#include "ayu/ui/sections/edited/edited_log_section.h" #include "ayu/ui/sections/edited/edited_log_section.h"
#include "ayu/utils/telegram_helpers.h" #include "ayu/utils/telegram_helpers.h"
#include "base/unixtime.h" #include "base/unixtime.h"
#include "history/view/history_view_context_menu.h"
#include "history/view/history_view_element.h" #include "history/view/history_view_element.h"
#include "window/window_session_controller.h" #include "window/window_session_controller.h"
@ -113,6 +114,22 @@ void AddMessageDetailsAction(not_null<Ui::PopupMenu*> menu, HistoryItem *item) {
const auto media = item->media(); const auto media = item->media();
const auto isSticker = media && media->document() && media->document()->sticker(); 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 isForwarded = forwarded && !forwarded->story && forwarded->psaType.isEmpty();
const auto messageId = QString::number(item->id.bare); const auto messageId = QString::number(item->id.bare);
@ -279,6 +296,18 @@ void AddMessageDetailsAction(not_null<Ui::PopupMenu*> 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
));
}
}
}, },
}); });
} }

View file

@ -554,9 +554,9 @@ void StickerSetBox::updateButtons() {
? tr::lng_stickers_copied_emoji(tr::now) ? tr::lng_stickers_copied_emoji(tr::now)
: tr::lng_stickers_copied(tr::now)); : tr::lng_stickers_copied(tr::now));
}; };
const auto addAuthorPack = [=](const std::shared_ptr<base::unique_qptr<Ui::PopupMenu>> &menu) const auto addPackOwner = [=](const std::shared_ptr<base::unique_qptr<Ui::PopupMenu>> &menu)
{ {
if (type == Data::StickersType::Stickers) { if (type == Data::StickersType::Stickers || type == Data::StickersType::Emoji) {
const auto pointer = Ui::MakeWeak(this); const auto pointer = Ui::MakeWeak(this);
(*menu)->addAction( (*menu)->addAction(
tr::ayu_MessageDetailsPackOwnerPC(tr::now), tr::ayu_MessageDetailsPackOwnerPC(tr::now),
@ -636,7 +636,7 @@ void StickerSetBox::updateButtons() {
: tr::lng_stickers_share_pack)(tr::now), : tr::lng_stickers_share_pack)(tr::now),
[=] { share(); closeBox(); }, [=] { share(); closeBox(); },
&st::menuIconShare); &st::menuIconShare);
addAuthorPack(menu); addPackOwner(menu);
(*menu)->popup(QCursor::pos()); (*menu)->popup(QCursor::pos());
return true; return true;
}); });
@ -686,7 +686,7 @@ void StickerSetBox::updateButtons() {
archive, archive,
&st::menuIconArchive); &st::menuIconArchive);
} }
addAuthorPack(menu); addPackOwner(menu);
(*menu)->popup(QCursor::pos()); (*menu)->popup(QCursor::pos());
return true; return true;
}); });