mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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) {
|
not_null<Main::Account*> Domain::add(MTP::Environment environment) {
|
||||||
Expects(started());
|
Expects(started());
|
||||||
Expects(_accounts.size() < kMaxAccounts);
|
Expects(_accounts.size() < kPremiumMaxAccounts);
|
||||||
|
|
||||||
static const auto cloneConfig = [](const MTP::Config &config) {
|
static const auto cloneConfig = [](const MTP::Config &config) {
|
||||||
return std::make_unique<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) {
|
void Domain::addActivated(MTP::Environment environment) {
|
||||||
if (accounts().size() < Main::Domain::kMaxAccounts) {
|
if (accounts().size() < maxAccounts()) {
|
||||||
activate(add(environment));
|
activate(add(environment));
|
||||||
} else {
|
} else {
|
||||||
for (auto &[index, account] : accounts()) {
|
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
|
} // namespace Main
|
||||||
|
|
|
@ -31,6 +31,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr auto kMaxAccounts = 3;
|
static constexpr auto kMaxAccounts = 3;
|
||||||
|
static constexpr auto kPremiumMaxAccounts = 4;
|
||||||
|
|
||||||
explicit Domain(const QString &dataName);
|
explicit Domain(const QString &dataName);
|
||||||
~Domain();
|
~Domain();
|
||||||
|
@ -40,6 +41,8 @@ public:
|
||||||
void resetWithForgottenPasscode();
|
void resetWithForgottenPasscode();
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
|
[[nodiscard]] int maxAccounts() const;
|
||||||
|
|
||||||
[[nodiscard]] Storage::Domain &local() const {
|
[[nodiscard]] Storage::Domain &local() const {
|
||||||
return *_local;
|
return *_local;
|
||||||
}
|
}
|
||||||
|
|
|
@ -326,7 +326,7 @@ void FillMenu(
|
||||||
&st::menuIconCancel);
|
&st::menuIconCancel);
|
||||||
} else {
|
} else {
|
||||||
const auto &list = Core::App().domain().accounts();
|
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), [=] {
|
addAction(tr::lng_menu_add_account(tr::now), [=] {
|
||||||
Core::App().domain().addActivated(MTP::Environment{});
|
Core::App().domain().addActivated(MTP::Environment{});
|
||||||
}, &st::menuIconAddAccount);
|
}, &st::menuIconAddAccount);
|
||||||
|
|
|
@ -708,7 +708,13 @@ not_null<Ui::SlideWrap<Ui::SettingsButton>*> AccountsList::setupAdd() {
|
||||||
|
|
||||||
const auto add = [=](MTP::Environment environment) {
|
const auto add = [=](MTP::Environment environment) {
|
||||||
Core::App().preventOrInvoke([=] {
|
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());
|
inner->resizeToWidth(_outer->width());
|
||||||
|
|
||||||
_addAccount->toggle(
|
_addAccount->toggle(
|
||||||
(inner->count() < Main::Domain::kMaxAccounts),
|
(inner->count() < Main::Domain::kPremiumMaxAccounts),
|
||||||
anim::type::instant);
|
anim::type::instant);
|
||||||
|
|
||||||
_reorder->start();
|
_reorder->start();
|
||||||
|
|
|
@ -160,7 +160,7 @@ Domain::StartModernResult Domain::startModern(
|
||||||
LOG(("App Info: reading encrypted info..."));
|
LOG(("App Info: reading encrypted info..."));
|
||||||
auto count = qint32();
|
auto count = qint32();
|
||||||
info.stream >> count;
|
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));
|
LOG(("App Error: bad accounts count: %1").arg(count));
|
||||||
return StartModernResult::Failed;
|
return StartModernResult::Failed;
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,7 @@ Domain::StartModernResult Domain::startModern(
|
||||||
auto index = qint32();
|
auto index = qint32();
|
||||||
info.stream >> index;
|
info.stream >> index;
|
||||||
if (index >= 0
|
if (index >= 0
|
||||||
&& index < Main::Domain::kMaxAccounts
|
&& index < Main::Domain::kPremiumMaxAccounts
|
||||||
&& tried.emplace(index).second) {
|
&& tried.emplace(index).second) {
|
||||||
auto account = std::make_unique<Main::Account>(
|
auto account = std::make_unique<Main::Account>(
|
||||||
_owner,
|
_owner,
|
||||||
|
|
Loading…
Add table
Reference in a new issue