diff --git a/Telegram/Resources/langs/rewrites/en.json b/Telegram/Resources/langs/rewrites/en.json index 24f9dbc0e..46dfe071b 100644 --- a/Telegram/Resources/langs/rewrites/en.json +++ b/Telegram/Resources/langs/rewrites/en.json @@ -133,6 +133,7 @@ "ktg_group_id_copied": "Group ID copied to clipboard.", "ktg_supergroup_id_copied": "Supergroup ID copied to clipboard.", "ktg_channel_id_copied": "Channel ID copied to clipboard.", + "ktg_phone_copied": "Phone copied to clipboard.", "ktg_forward_go_to_chat": "Go to chat", "ktg_settings_forward": "Forward", "ktg_settings_forward_retain_selection": "Retain selection after forward", diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index 30bfdb741..fd62d5148 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/layers/generic_box.h" #include "ui/toast/toast.h" #include "ui/text/text_utilities.h" // Ui::Text::ToUpper +#include "ui/text/format_values.h" // Ui::FormatPhone #include "history/history_location_manager.h" // LocationClickHandler. #include "history/view/history_view_context_menu.h" // HistoryView::ShowReportPeerBox #include "boxes/abstract_box.h" @@ -331,11 +332,36 @@ object_ptr DetailsFiller::setupInfo() { user->session().supportHelper().infoLabelValue(user), user->session().supportHelper().infoTextValue(user)); } + + auto phoneDrawableText = rpl::combine( + PhoneValue(user), + UsernameValue(user), + AboutValue(user), + tr::lng_info_mobile_hidden() + ) | rpl::map([]( + const TextWithEntities &phone, + const TextWithEntities &username, + const TextWithEntities &bio, + const QString &hidden) { + return (phone.text.isEmpty() && username.text.isEmpty() && bio.text.isEmpty()) + ? Ui::Text::WithEntities(hidden) + : Ui::Text::Link(phone.text); + }); - addInfoOneLine( + auto phoneInfo = addInfoOneLineInline( tr::lng_info_mobile_label(), - PhoneOrHiddenValue(user), + std::move(phoneDrawableText), tr::lng_profile_copy_phone(tr::now)); + + phoneInfo->setClickHandlerFilter([user](auto&&...) { + const auto phoneText = user->phone(); + if (!phoneText.isEmpty()) { + QGuiApplication::clipboard()->setText(Ui::FormatPhone(phoneText)); + Ui::Toast::Show(ktr("ktg_phone_copied")); + } + return false; + }); + auto label = user->isBot() ? tr::lng_info_about_label() : tr::lng_info_bio_label();