diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 5dba6565..a7daef06 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -660,9 +660,14 @@ class LoginPageController extends GetxController if (Accounts.account.isEmpty) { return SmartDialog.showToast('请先登录'); } - final selectAccount = Accounts.accountMode - .map((key, value) => MapEntry(key, value.mid.toString())); - final options = {'0': '0', for (String i in Accounts.account.keys) i: i}; + final selectAccount = Map.of(Accounts.accountMode); + final options = { + AnonymousAccount(): '0', + ...Accounts.account + .toMap() + .cast() + .map((k, v) => MapEntry(v, k)) + }; return showDialog( context: context, builder: (context) => StatefulBuilder(builder: (context, setState) { @@ -680,7 +685,7 @@ class LoginPageController extends GetxController crossAxisAlignment: CrossAxisAlignment.start, children: AccountType.values .map( - (e) => WrapRadioOptionsGroup( + (e) => WrapRadioOptionsGroup( groupTitle: e.title, options: options, selectedValue: selectAccount[e], @@ -703,10 +708,8 @@ class LoginPageController extends GetxController TextButton( onPressed: () { for (var i in selectAccount.entries) { - var account = - Accounts.account.get(i.value) ?? AnonymousAccount(); - if (account != Accounts.get(i.key)) { - Accounts.set(i.key, account); + if (i.value != Accounts.get(i.key)) { + Accounts.set(i.key, i.value); } } Get.back(); diff --git a/lib/pages/mine/controller.dart b/lib/pages/mine/controller.dart index 45507159..3773a6d2 100644 --- a/lib/pages/mine/controller.dart +++ b/lib/pages/mine/controller.dart @@ -87,8 +87,7 @@ class MineController extends GetxController { } anonymity.value = !anonymity.value; if (anonymity.value) { - Accounts.accountMode[AccountType.heartbeat] = AnonymousAccount(); - SmartDialog.show( + SmartDialog.show( clickMaskDismiss: false, usePenetrate: true, displayTime: const Duration(seconds: 2), @@ -128,9 +127,7 @@ class MineController extends GetxController { children: [ TextButton( onPressed: () { - SmartDialog.dismiss(); - Accounts.set( - AccountType.heartbeat, AnonymousAccount()); + SmartDialog.dismiss(result: true); SmartDialog.showToast('已设为永久无痕模式'); }, child: Text( @@ -161,7 +158,11 @@ class MineController extends GetxController { // showCloseIcon: true, ); }, - ); + ).then((res) { + res == true + ? Accounts.set(AccountType.heartbeat, AnonymousAccount()) + : Accounts.accountMode[AccountType.heartbeat] = AnonymousAccount(); + }); } else { Accounts.set(AccountType.heartbeat, Accounts.main); SmartDialog.show( diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index a68234b0..952c920f 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -96,7 +96,6 @@ class VideoDetailController extends GetxController double? brightness; // 默认记录历史记录 bool enableHeart = true; - dynamic userInfo; Floating? floating; late PreferredSizeWidget headerControl; @@ -250,7 +249,6 @@ class VideoDetailController extends GetxController @override void onInit() { super.onInit(); - userInfo = GStorage.userInfo.get('userInfoCache'); var keys = Get.arguments.keys.toList(); if (keys.isNotEmpty) { if (keys.contains('videoItem')) { @@ -284,7 +282,7 @@ class VideoDetailController extends GetxController setting.get(SettingBoxKey.autoPlayEnable, defaultValue: false); if (autoPlay.value) isShowCover.value = false; enableHA.value = setting.get(SettingBoxKey.enableHA, defaultValue: true); - if (userInfo == null || + if (!Accounts.get(AccountType.heartbeat).isLogin || GStorage.localCache.get(LocalCacheKey.historyPause) == true) { enableHeart = false; } diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index f8be0b10..4b6d84f9 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -1039,7 +1039,7 @@ class _VideoDetailPageState extends State await videoIntroController.viewLater(); break; case 'report': - if (videoDetailController.userInfo == null) { + if (!Accounts.main.isLogin) { SmartDialog.showToast('账号未登录'); } else { Get.toNamed('/webview', parameters: { diff --git a/lib/pages/video/detail/view_v.dart b/lib/pages/video/detail/view_v.dart index c8a1e386..ab88bfed 100644 --- a/lib/pages/video/detail/view_v.dart +++ b/lib/pages/video/detail/view_v.dart @@ -874,9 +874,8 @@ class _VideoDetailPageVState extends State .viewLater(); break; case 'report': - if (videoDetailController - .userInfo == - null) { + if (!Accounts + .main.isLogin) { SmartDialog.showToast( '账号未登录'); } else { @@ -1418,7 +1417,7 @@ class _VideoDetailPageVState extends State await videoIntroController.viewLater(); break; case 'report': - if (videoDetailController.userInfo == null) { + if (!Accounts.main.isLogin) { SmartDialog.showToast('账号未登录'); } else { Get.toNamed('/webview', parameters: { diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index a009d96a..0ffc4a08 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -545,7 +545,7 @@ class _HeaderControlState extends State { ListTile( dense: true, onTap: () { - if (videoDetailCtr.userInfo == null) { + if (!Accounts.main.isLogin) { SmartDialog.showToast('账号未登录'); return; } diff --git a/lib/utils/accounts/account_manager/account_mgr.dart b/lib/utils/accounts/account_manager/account_mgr.dart index cf76ae59..b5733eeb 100644 --- a/lib/utils/accounts/account_manager/account_mgr.dart +++ b/lib/utils/accounts/account_manager/account_mgr.dart @@ -92,7 +92,13 @@ class AccountManager extends Interceptor { final Account account = options.extra['account'] ?? _findAccount(path); - if (account.isLogin) options.headers.addAll(account.headers); + if (account.isLogin) { + options.headers.addAll(account.headers); + } else if (path == Api.heartBeat) { + return handler.reject( + DioException.requestCancelled(requestOptions: options, reason: null), + false); + } // app端不需要管理cookie if (path.startsWith(HttpString.appBaseUrl)) { @@ -190,8 +196,8 @@ class AccountManager extends Interceptor { } Future _saveCookies(Response response) async { - final account = (response.requestOptions.extra['account'] as Account? ?? - _findAccount(response.requestOptions.path)); + final Account account = response.requestOptions.extra['account'] ?? + _findAccount(response.requestOptions.path); final setCookies = response.headers[HttpHeaders.setCookieHeader]; if (setCookies == null || setCookies.isEmpty) { return;