diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 8cfa55d28..9d1142980 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2556,5 +2556,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_channel_status_not_in" = "not subscribed"; "ktg_group_status_owner" = "is owner"; "ktg_group_status_admin" = "is admin"; +"ktg_too_many_accounts_warning" = "Warning! Using too many accounts at the same time is not recommended due to higher memory comsumption and possible crashes because of it.\n\nYou sure you want to add a new account?"; +"ktg_account_add_anyway" = "Add anyway"; // Keys finished diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index 00eb190b3..007a49f7f 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -147,5 +147,7 @@ "ktg_group_status_not_in": "не участник", "ktg_channel_status_not_in": "не подписчик", "ktg_group_status_owner": "вы владелец", - "ktg_group_status_admin": "вы админ" + "ktg_group_status_admin": "вы админ", + "ktg_too_many_accounts_warning": "Внимание! Использование слишком большого количества аккаунтов одновременно не рекомендуется из-за высокого потребления памяти, а также возможных вылетов из-за этого.\n\nВы точно хотите добавить новый аккаунт?", + "ktg_account_add_anyway": "Всё равно добавить" } diff --git a/Telegram/SourceFiles/main/main_domain.h b/Telegram/SourceFiles/main/main_domain.h index 4adadf21e..7c7d1e668 100644 --- a/Telegram/SourceFiles/main/main_domain.h +++ b/Telegram/SourceFiles/main/main_domain.h @@ -30,7 +30,8 @@ public: std::unique_ptr account; }; - static constexpr auto kMaxAccounts = 3; + static constexpr auto kMaxAccountsWarn = 3; + static constexpr auto kMaxAccounts = 10; explicit Domain(const QString &dataName); ~Domain(); diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 4858d8767..b72629c2a 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -760,6 +760,8 @@ void MainMenu::rebuildAccounts() { _addAccount->toggle( (count < Main::Domain::kMaxAccounts), anim::type::instant); + + _accountsCount = count; } not_null*> MainMenu::setupAddAccount( @@ -797,7 +799,19 @@ not_null*> MainMenu::setupAddAccount( }, button->lifetime()); const auto add = [=](MTP::Environment environment) { - Core::App().domain().addActivated(environment); + const auto sure = [=] { + Core::App().domain().addActivated(environment); + }; + if (_accountsCount >= Main::Domain::kMaxAccountsWarn) { + Ui::show( + Box( + tr::ktg_too_many_accounts_warning(tr::now), + tr::ktg_account_add_anyway(tr::now), + sure), + Ui::LayerOption::KeepOther); + } else { + sure(); + } }; button->setAcceptBoth(true); diff --git a/Telegram/SourceFiles/window/window_main_menu.h b/Telegram/SourceFiles/window/window_main_menu.h index 661364ab2..e78e3e67f 100644 --- a/Telegram/SourceFiles/window/window_main_menu.h +++ b/Telegram/SourceFiles/window/window_main_menu.h @@ -82,6 +82,7 @@ private: not_null, base::unique_qptr> _watched; not_null*> _accounts; + int _accountsCount = 0; Ui::SlideWrap *_addAccount = nullptr; not_null*> _shadow; not_null _menu;