From 76d44172f14a038915d1249674f360246c1ac87b Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 6 Dec 2022 23:11:11 +0400 Subject: [PATCH] Add "Copy Topic Link" topic profile menu item. --- Telegram/Resources/langs/lang.strings | 1 + .../SourceFiles/window/window_peer_menu.cpp | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 290fc3c36..cd86ebea0 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2241,6 +2241,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_context_copy_link" = "Copy Link"; "lng_context_copy_message_link" = "Copy Message Link"; "lng_context_copy_post_link" = "Copy Post Link"; +"lng_context_copy_topic_link" = "Copy Topic Link"; "lng_context_copy_email" = "Copy Email Address"; "lng_context_copy_hashtag" = "Copy Hashtag"; "lng_context_copy_mention" = "Copy Username"; diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 7f6a290a6..43ab08b5e 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -88,6 +88,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_menu_icons.h" #include +#include namespace Window { namespace { @@ -286,6 +287,7 @@ private: void addDeleteChat(); void addLeaveChat(); void addJoinChat(); + void addTopicLink(); void addManageTopic(); void addManageChat(); void addCreatePoll(); @@ -925,6 +927,28 @@ void Filler::addDeleteTopic() { }); } +void Filler::addTopicLink() { + if (!_topic || _topic->creating()) { + return; + } + const auto channel = _topic->channel(); + const auto id = _topic->rootId(); + const auto controller = _controller; + _addAction(tr::lng_context_copy_topic_link(tr::now), [=] { + const auto base = channel->hasUsername() + ? channel->username() + : "c/" + QString::number(peerToChannel(channel->id).bare); + const auto query = base + '/' + QString::number(id.bare); + const auto link = channel->session().createInternalLinkFull(query); + QGuiApplication::clipboard()->setText(link); + Ui::Toast::Show( + Window::Show(controller).toastParent(), + (channel->hasUsername() + ? tr::lng_channel_public_link_copied(tr::now) + : tr::lng_context_about_private_link(tr::now))); + }, &st::menuIconCopy); +} + void Filler::addManageTopic() { if (!_topic || !_topic->canEdit()) { return; @@ -1187,8 +1211,9 @@ void Filler::fillProfileActions() { addGiftPremium(); addBotToGroup(); addNewMembers(); - addManageTopic(); addManageChat(); + addTopicLink(); + addManageTopic(); addToggleTopicClosed(); addViewDiscussion(); addExportChat();