@@ -8,37 +8,42 @@ For license and copyright information please follow this link:
88#include " boxes/edit_privacy_box.h"
99
1010#include " api/api_global_privacy.h"
11+ #include " apiwrap.h"
1112#include " boxes/filters/edit_filter_chats_list.h"
13+ #include " boxes/peers/edit_peer_invite_link.h"
14+ #include " data/data_channel.h"
15+ #include " data/data_chat.h"
16+ #include " data/data_peer_values.h"
17+ #include " data/data_user.h"
18+ #include " history/history.h"
19+ #include " lang/lang_keys.h"
20+ #include " main/main_app_config.h"
21+ #include " main/main_session.h"
22+ #include " settings/settings_premium.h"
23+ #include " settings/settings_privacy_controllers.h"
24+ #include " settings/settings_privacy_security.h"
25+ #include " ui/boxes/peer_qr_box.h"
26+ #include " ui/controls/invite_link_buttons.h"
27+ #include " ui/controls/invite_link_label.h"
1228#include " ui/effects/premium_graphics.h"
1329#include " ui/layers/generic_box.h"
14- #include " ui/widgets/checkbox.h"
15- #include " ui/widgets/continuous_sliders.h"
16- #include " ui/widgets/shadow.h"
30+ #include " ui/painter.h"
1731#include " ui/text/format_values.h"
1832#include " ui/text/text_utilities.h"
1933#include " ui/toast/toast.h"
20- #include " ui/wrap/slide_wrap.h"
21- #include " ui/painter.h"
2234#include " ui/vertical_list.h"
23- #include " history/history.h"
24- #include " boxes/peer_list_controllers.h"
25- #include " settings/settings_premium.h"
26- #include " settings/settings_privacy_controllers.h"
27- #include " settings/settings_privacy_security.h"
28- #include " calls/calls_instance.h"
29- #include " lang/lang_keys.h"
30- #include " apiwrap.h"
31- #include " main/main_app_config.h"
32- #include " main/main_session.h"
33- #include " data/data_user.h"
34- #include " data/data_chat.h"
35- #include " data/data_channel.h"
36- #include " data/data_peer_values.h"
35+ #include " ui/widgets/buttons.h"
36+ #include " ui/widgets/checkbox.h"
37+ #include " ui/widgets/continuous_sliders.h"
38+ #include " ui/widgets/popup_menu.h"
39+ #include " ui/widgets/shadow.h"
40+ #include " ui/wrap/slide_wrap.h"
3741#include " window/window_session_controller.h"
3842#include " styles/style_boxes.h"
39- #include " styles/style_settings .h"
43+ #include " styles/style_info .h"
4044#include " styles/style_layers.h"
4145#include " styles/style_menu_icons.h"
46+ #include " styles/style_settings.h"
4247#include " styles/style_window.h"
4348
4449namespace {
@@ -1312,6 +1317,58 @@ void EditDirectMessagesPriceBox(
13121317 *result = stars;
13131318 }, box->lifetime ());
13141319
1320+ if (const auto username = channel->username (); !username.isEmpty ()) {
1321+ Ui::AddSkip (inner);
1322+ Ui::AddSubsectionTitle (
1323+ inner,
1324+ tr::lng_manage_monoforum_link_subtitle ());
1325+
1326+ constexpr auto kDirectParam = " ?direct" _cs;
1327+ const auto link = channel->session ().createInternalLinkFull (username)
1328+ + kDirectParam .utf8 ();
1329+ const auto copyLink = [=] {
1330+ TextUtilities::SetClipboardText (TextForMimeData::Simple (link));
1331+ box->uiShow ()->showToast (tr::lng_group_invite_copied (tr::now));
1332+ };
1333+ const auto shareLink = [=] {
1334+ box->uiShow ()->showBox (ShareInviteLinkBox (channel, link));
1335+ };
1336+ const auto createMenu = [=] {
1337+ auto result = base::make_unique_q<Ui::PopupMenu>(
1338+ inner,
1339+ st::popupMenuWithIcons);
1340+ result->addAction (
1341+ tr::lng_group_invite_context_qr (tr::now),
1342+ [=] {
1343+ box->uiShow ()->showBox (Box ([=](
1344+ not_null<Ui::GenericBox*> qrBox) {
1345+ Ui::FillPeerQrBox (qrBox, channel, link, nullptr );
1346+ }));
1347+ },
1348+ &st::menuIconQrCode);
1349+ return result;
1350+ };
1351+
1352+ auto linkText = Ui::Text::StripUrlProtocol (link);
1353+ const auto label = inner->lifetime ().make_state <Ui::InviteLinkLabel>(
1354+ inner,
1355+ rpl::single (std::move (linkText)),
1356+ createMenu);
1357+ inner->add (
1358+ label->take (),
1359+ st::inviteLinkFieldPadding);
1360+
1361+ label->clicks () | rpl::start_with_next (copyLink, label->lifetime ());
1362+
1363+ Ui::AddSkip (inner);
1364+
1365+ AddCopyShareLinkButtons (inner, copyLink, shareLink);
1366+ Ui::AddSkip (inner);
1367+ Ui::AddSkip (inner);
1368+
1369+ Ui::AddDivider (inner);
1370+ }
1371+
13151372 box->addButton (tr::lng_settings_save (), [=] {
13161373 const auto weak = base::make_weak (box);
13171374 callback (toggle->toggled () ? *result : std::optional<int >());
0 commit comments