some fixes (#498)

* nologin reject headtbeat

* fix: change anonymity

* use account as key
This commit is contained in:
My-Responsitories
2025-03-23 13:46:04 +08:00
committed by GitHub
parent 9d0ac30fad
commit 7c3e3cb1f8
7 changed files with 33 additions and 26 deletions

View File

@@ -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<String, Account>()
.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<String>(
(e) => WrapRadioOptionsGroup<Account>(
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();

View File

@@ -87,8 +87,7 @@ class MineController extends GetxController {
}
anonymity.value = !anonymity.value;
if (anonymity.value) {
Accounts.accountMode[AccountType.heartbeat] = AnonymousAccount();
SmartDialog.show(
SmartDialog.show<bool>(
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(

View File

@@ -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;
}

View File

@@ -1039,7 +1039,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
await videoIntroController.viewLater();
break;
case 'report':
if (videoDetailController.userInfo == null) {
if (!Accounts.main.isLogin) {
SmartDialog.showToast('账号未登录');
} else {
Get.toNamed('/webview', parameters: {

View File

@@ -874,9 +874,8 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
.viewLater();
break;
case 'report':
if (videoDetailController
.userInfo ==
null) {
if (!Accounts
.main.isLogin) {
SmartDialog.showToast(
'账号未登录');
} else {
@@ -1418,7 +1417,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
await videoIntroController.viewLater();
break;
case 'report':
if (videoDetailController.userInfo == null) {
if (!Accounts.main.isLogin) {
SmartDialog.showToast('账号未登录');
} else {
Get.toNamed('/webview', parameters: {

View File

@@ -545,7 +545,7 @@ class _HeaderControlState extends State<HeaderControl> {
ListTile(
dense: true,
onTap: () {
if (videoDetailCtr.userInfo == null) {
if (!Accounts.main.isLogin) {
SmartDialog.showToast('账号未登录');
return;
}

View File

@@ -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<void> _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;