diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 5e96cd7b5..62d2ca41d 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_menu_add_account" = "Add Account"; "lng_menu_activate" = "Activate"; "lng_menu_set_status" = "Set Emoji Status"; +"lng_menu_change_status" = "Change Emoji Status"; "lng_disable_notifications_from_tray" = "Disable notifications"; "lng_enable_notifications_from_tray" = "Enable notifications"; diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 2d0fec1de..adf0660f5 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -118,6 +118,24 @@ void ShowCallsBox(not_null window) { window->show(Box(std::move(controller), initBox)); } +[[nodiscard]] rpl::producer SetStatusLabel( + not_null session) { + const auto self = session->user(); + return session->changes().peerFlagsValue( + self, + Data::PeerUpdate::Flag::EmojiStatus + ) | rpl::map([=] { + return (self->emojiStatusId() != 0); + }) | rpl::distinct_until_changed() | rpl::map([](bool has) { + const auto makeLink = [](const QString &text) { + return Ui::Text::Link(text); + }; + return (has + ? tr::lng_menu_change_status + : tr::lng_menu_set_status)(makeLink); + }) | rpl::flatten_latest(); +} + } // namespace class MainMenu::ToggleAccountsButton final : public Ui::AbstractButton { @@ -340,9 +358,7 @@ MainMenu::MainMenu( Ui::UserpicButton::Role::Custom, st::mainMenuUserpic) , _toggleAccounts(this) -, _setEmojiStatus(this, tr::lng_menu_set_status([](const QString &text) { - return Ui::Text::Link(text); -})) +, _setEmojiStatus(this, SetStatusLabel(&controller->session())) , _emojiStatusPanel(std::make_unique()) , _badge(std::make_unique( this,