feat: logout (#497)

* feat: logout

* update api type
This commit is contained in:
My-Responsitories
2025-03-23 13:46:26 +08:00
committed by GitHub
parent 7c3e3cb1f8
commit d6587cf3b6
11 changed files with 139 additions and 129 deletions

View File

@@ -862,9 +862,8 @@ class Accounts {
for (var i in AccountType.values) {
accountMode[i] = AnonymousAccount();
}
if (!AnonymousAccount().activited) {
Request.buvidActive(AnonymousAccount());
}
await AnonymousAccount().delete();
Request.buvidActive(AnonymousAccount());
}
static Future<void> close() async {
@@ -872,6 +871,16 @@ class Accounts {
account.close();
}
static Future<void> deleteAll(Set<Account> accounts) async {
var isloginMain = Accounts.main.isLogin;
Accounts.accountMode
.updateAll((_, a) => accounts.contains(a) ? AnonymousAccount() : a);
await Future.wait(accounts.map((i) => i.delete()));
if (isloginMain && !Accounts.main.isLogin) {
await LoginUtils.onLogoutMain();
}
}
static Future<void> set(AccountType key, Account account) async {
await (accountMode[key]?..type.remove(key))?.onChange();
accountMode[key] = account..type.add(key);
@@ -879,11 +888,9 @@ class Accounts {
if (!account.activited) await Request.buvidActive(account);
switch (key) {
case AccountType.main:
if (account.isLogin) {
await LoginUtils.onLoginMain();
} else {
await LoginUtils.onLogoutMain();
}
await (account.isLogin
? LoginUtils.onLoginMain()
: LoginUtils.onLogoutMain());
break;
case AccountType.heartbeat:
MineController.anonymity.value = !account.isLogin;