mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-02-04 22:25:58 +00:00
Custom "Copy ID" for peer ID context menu.
This commit is contained in:
parent
1038baf467
commit
3cb33f0825
@ -1162,7 +1162,14 @@ bool Application::openCustomUrl(
|
||||
|| passcodeLocked()) {
|
||||
return false;
|
||||
}
|
||||
const auto command = base::StringViewMid(urlTrimmed, protocol.size(), 8192);
|
||||
static const auto kTagExp = QRegularExpression(
|
||||
u"\\~[a-zA-Z0-9_\\-]+\\~:"_q);
|
||||
auto skip = protocol.size();
|
||||
const auto match = kTagExp.match(urlTrimmed, skip);
|
||||
if (match.hasMatch()) {
|
||||
skip += match.capturedLength();
|
||||
}
|
||||
const auto command = base::StringViewMid(urlTrimmed, skip, 8192);
|
||||
const auto my = context.value<ClickHandlerContext>();
|
||||
const auto controller = my.sessionWindow.get()
|
||||
? my.sessionWindow.get()
|
||||
|
@ -185,7 +185,7 @@ base::options::toggle ShowPeerIdBelowAbout({
|
||||
const auto raw = peer->id.value & PeerId::kChatTypeMask;
|
||||
value.append(Link(
|
||||
Italic(Lang::FormatCountDecimal(raw)),
|
||||
"internal:copy:" + QString::number(raw)));
|
||||
"internal:~peer_id~:copy:" + QString::number(raw)));
|
||||
return std::move(value);
|
||||
});
|
||||
}
|
||||
@ -979,6 +979,20 @@ object_ptr<Ui::RpWidget> DetailsFiller::setupInfo() {
|
||||
state->labelText = std::move(text);
|
||||
label->setContextMenuHook([=](
|
||||
Ui::FlatLabel::ContextMenuRequest request) {
|
||||
if (request.link) {
|
||||
const auto &url = request.link->url();
|
||||
if (url.startsWith(u"internal:~peer_id~:"_q)) {
|
||||
const auto weak = base::make_weak(controller);
|
||||
request.menu->addAction(u"Copy ID"_q, [=] {
|
||||
Core::App().openInternalUrl(
|
||||
url,
|
||||
QVariant::fromValue(ClickHandlerContext{
|
||||
.sessionWindow = weak,
|
||||
}));
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
label->fillContextMenu(request);
|
||||
if (Ui::SkipTranslate(state->labelText.current())) {
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user