mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +02:00
Added initial support for increased premium count of accounts.
This commit is contained in:
parent
78246aada7
commit
35e4dd5968
5 changed files with 24 additions and 7 deletions
|
@ -236,7 +236,7 @@ void Domain::scheduleUpdateUnreadBadge() {
|
|||
|
||||
not_null<Main::Account*> Domain::add(MTP::Environment environment) {
|
||||
Expects(started());
|
||||
Expects(_accounts.size() < kMaxAccounts);
|
||||
Expects(_accounts.size() < kPremiumMaxAccounts);
|
||||
|
||||
static const auto cloneConfig = [](const MTP::Config &config) {
|
||||
return std::make_unique<MTP::Config>(config);
|
||||
|
@ -283,7 +283,7 @@ not_null<Main::Account*> Domain::add(MTP::Environment environment) {
|
|||
}
|
||||
|
||||
void Domain::addActivated(MTP::Environment environment) {
|
||||
if (accounts().size() < Main::Domain::kMaxAccounts) {
|
||||
if (accounts().size() < maxAccounts()) {
|
||||
activate(add(environment));
|
||||
} else {
|
||||
for (auto &[index, account] : accounts()) {
|
||||
|
@ -438,4 +438,12 @@ void Domain::scheduleWriteAccounts() {
|
|||
});
|
||||
}
|
||||
|
||||
int Domain::maxAccounts() const {
|
||||
const auto isAnyPreimium = ranges::any_of(accounts(), [](
|
||||
const Main::Domain::AccountWithIndex &d) {
|
||||
return d.account->session().premium();
|
||||
});
|
||||
return isAnyPreimium ? kPremiumMaxAccounts : kMaxAccounts;
|
||||
}
|
||||
|
||||
} // namespace Main
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
};
|
||||
|
||||
static constexpr auto kMaxAccounts = 3;
|
||||
static constexpr auto kPremiumMaxAccounts = 4;
|
||||
|
||||
explicit Domain(const QString &dataName);
|
||||
~Domain();
|
||||
|
@ -40,6 +41,8 @@ public:
|
|||
void resetWithForgottenPasscode();
|
||||
void finish();
|
||||
|
||||
[[nodiscard]] int maxAccounts() const;
|
||||
|
||||
[[nodiscard]] Storage::Domain &local() const {
|
||||
return *_local;
|
||||
}
|
||||
|
|
|
@ -326,7 +326,7 @@ void FillMenu(
|
|||
&st::menuIconCancel);
|
||||
} else {
|
||||
const auto &list = Core::App().domain().accounts();
|
||||
if (list.size() < ::Main::Domain::kMaxAccounts) {
|
||||
if (list.size() < Core::App().domain().maxAccounts()) {
|
||||
addAction(tr::lng_menu_add_account(tr::now), [=] {
|
||||
Core::App().domain().addActivated(MTP::Environment{});
|
||||
}, &st::menuIconAddAccount);
|
||||
|
|
|
@ -708,7 +708,13 @@ not_null<Ui::SlideWrap<Ui::SettingsButton>*> AccountsList::setupAdd() {
|
|||
|
||||
const auto add = [=](MTP::Environment environment) {
|
||||
Core::App().preventOrInvoke([=] {
|
||||
Core::App().domain().addActivated(environment);
|
||||
auto &domain = _controller->session().domain();
|
||||
if (domain.accounts().size() >= domain.maxAccounts()) {
|
||||
_controller->show(
|
||||
Box(AccountsLimitBox, &_controller->session()));
|
||||
} else {
|
||||
domain.addActivated(environment);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -804,7 +810,7 @@ void AccountsList::rebuild() {
|
|||
inner->resizeToWidth(_outer->width());
|
||||
|
||||
_addAccount->toggle(
|
||||
(inner->count() < Main::Domain::kMaxAccounts),
|
||||
(inner->count() < Main::Domain::kPremiumMaxAccounts),
|
||||
anim::type::instant);
|
||||
|
||||
_reorder->start();
|
||||
|
|
|
@ -160,7 +160,7 @@ Domain::StartModernResult Domain::startModern(
|
|||
LOG(("App Info: reading encrypted info..."));
|
||||
auto count = qint32();
|
||||
info.stream >> count;
|
||||
if (count <= 0 || count > Main::Domain::kMaxAccounts) {
|
||||
if (count <= 0 || count > Main::Domain::kPremiumMaxAccounts) {
|
||||
LOG(("App Error: bad accounts count: %1").arg(count));
|
||||
return StartModernResult::Failed;
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ Domain::StartModernResult Domain::startModern(
|
|||
auto index = qint32();
|
||||
info.stream >> index;
|
||||
if (index >= 0
|
||||
&& index < Main::Domain::kMaxAccounts
|
||||
&& index < Main::Domain::kPremiumMaxAccounts
|
||||
&& tried.emplace(index).second) {
|
||||
auto account = std::make_unique<Main::Account>(
|
||||
_owner,
|
||||
|
|
Loading…
Add table
Reference in a new issue