From aeb610ff70d18d9b8a078255dbdf3bc5f76fa515 Mon Sep 17 00:00:00 2001 From: AlexeyZavar Date: Tue, 15 Jul 2025 23:08:56 +0300 Subject: [PATCH] feat: copy pack ID & copy single emoji ID --- .../SourceFiles/boxes/sticker_set_box.cpp | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/boxes/sticker_set_box.cpp b/Telegram/SourceFiles/boxes/sticker_set_box.cpp index 02db10e63e..3375799084 100644 --- a/Telegram/SourceFiles/boxes/sticker_set_box.cpp +++ b/Telegram/SourceFiles/boxes/sticker_set_box.cpp @@ -768,12 +768,14 @@ void StickerSetBox::updateButtons() { &st::menuIconManage); }); }(); - const auto addPackOwner = [=](const std::shared_ptr> &menu) + const auto addPackIdActions = [=](const std::shared_ptr> &menu) { if (type == Data::StickersType::Stickers || type == Data::StickersType::Emoji) { + const auto &settings = AyuSettings::getInstance(); const auto weak = Ui::MakeWeak(this); const auto session = _session; - const auto innerId = _inner->setId() >> 32; + const auto setId = _inner->setId(); + const auto innerId = setId >> 32; (*menu)->addAction( tr::ayu_MessageDetailsPackOwnerPC(tr::now), @@ -816,6 +818,26 @@ void StickerSetBox::updateButtons() { }); }, &st::menuIconProfile); + + if (settings.showPeerId != 0) { + (*menu)->addAction( + tr::ayu_ContextCopyID(tr::now), + [weak, session, setId] + { + if (!weak) { + return; + } + + const auto strongInner = weak.data(); + if (!strongInner) { + return; + } + + QGuiApplication::clipboard()->setText(QString::number(setId)); + strongInner->showToast(tr::ayu_IDCopiedToast(tr::now)); + }, + &st::menuIconCopy); + } } }; if (_inner->notInstalled()) { @@ -865,7 +887,7 @@ void StickerSetBox::updateButtons() { : tr::lng_stickers_share_pack)(tr::now), [=] { share(); closeBox(); }, &st::menuIconShare); - addPackOwner(menu); + addPackIdActions(menu); (*menu)->popup(QCursor::pos()); return true; }); @@ -918,7 +940,7 @@ void StickerSetBox::updateButtons() { archive, &st::menuIconArchive); } - addPackOwner(menu); + addPackIdActions(menu); (*menu)->popup(QCursor::pos()); return true; }); @@ -1486,6 +1508,16 @@ void StickerSetBox::Inner::contextMenuEvent(QContextMenuEvent *e) { QGuiApplication::clipboard()->setMimeData(data.release()); } }, &st::menuIconCopy); + + const auto &settings = AyuSettings::getInstance(); + if (settings.showPeerId != 0) { + _menu->addAction(tr::ayu_ContextCopyID(tr::now), + [=] + { + QGuiApplication::clipboard()->setText(QString::number(_pack[index]->id)); + }, + &st::menuIconCopy); + } } } else if (details.type != SendMenu::Type::Disabled) { const auto document = _pack[index];