Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-29 15:29:20 +08:00
parent 74452cd622
commit 8d83143ca6
3 changed files with 43 additions and 30 deletions

View File

@@ -6,6 +6,7 @@ import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/common/common_controller.dart';
import 'package:PiliPlus/pages/video/detail/introduction/controller.dart'; import 'package:PiliPlus/pages/video/detail/introduction/controller.dart';
import 'package:PiliPlus/pages/video/detail/introduction/pay_coins_page.dart'; import 'package:PiliPlus/pages/video/detail/introduction/pay_coins_page.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -59,8 +60,7 @@ class BangumiIntroController extends CommonController {
dynamic videoTags; dynamic videoTags;
bool isLogin = false; bool isLogin = false;
Rx<FavFolderData> favFolderData = FavFolderData().obs; Rx<FavFolderData> favFolderData = FavFolderData().obs;
List addMediaIdsNew = []; List? favIds;
List delMediaIdsNew = [];
dynamic userInfo; dynamic userInfo;
late final enableQuickFav = late final enableQuickFav =
@@ -314,14 +314,22 @@ class BangumiIntroController extends CommonController {
}); });
return; return;
} }
List addMediaIdsNew = [];
List delMediaIdsNew = [];
try { try {
for (var i in favFolderData.value.list!.toList()) { for (var i in favFolderData.value.list!.toList()) {
bool isFaved = favIds?.contains(i.id) == true;
if (i.favState == 1) { if (i.favState == 1) {
if (isFaved.not) {
addMediaIdsNew.add(i.id); addMediaIdsNew.add(i.id);
}
} else { } else {
if (isFaved) {
delMediaIdsNew.add(i.id); delMediaIdsNew.add(i.id);
} }
} }
}
} catch (_) {} } catch (_) {}
var result = await VideoHttp.favVideo( var result = await VideoHttp.favVideo(
aid: epId, aid: epId,
@@ -330,8 +338,6 @@ class BangumiIntroController extends CommonController {
delIds: delMediaIdsNew.join(','), delIds: delMediaIdsNew.join(','),
); );
if (result['status']) { if (result['status']) {
addMediaIdsNew = [];
delMediaIdsNew = [];
SmartDialog.showToast('操作成功'); SmartDialog.showToast('操作成功');
Get.back(); Get.back();
Future.delayed(const Duration(milliseconds: 255), () { Future.delayed(const Duration(milliseconds: 255), () {
@@ -394,14 +400,10 @@ class BangumiIntroController extends CommonController {
onChoose(bool checkValue, int index) { onChoose(bool checkValue, int index) {
feedBack(); feedBack();
List<FavFolderItemData> datalist = favFolderData.value.list!; List<FavFolderItemData> datalist = favFolderData.value.list!;
for (var i = 0; i < datalist.length; i++) { datalist[index].favState = checkValue ? 1 : 0;
if (i == index) { datalist[index].mediaCount = checkValue
datalist[i].favState = checkValue == true ? 1 : 0; ? datalist[index].mediaCount! + 1
datalist[i].mediaCount = checkValue == true : datalist[index].mediaCount! - 1;
? datalist[i].mediaCount! + 1
: datalist[i].mediaCount! - 1;
}
}
favFolderData.value.list = datalist; favFolderData.value.list = datalist;
favFolderData.refresh(); favFolderData.refresh();
} }
@@ -487,6 +489,7 @@ class BangumiIntroController extends CommonController {
} }
Future queryVideoInFolder() async { Future queryVideoInFolder() async {
favIds = null;
var result = await VideoHttp.videoInFolder( var result = await VideoHttp.videoInFolder(
mid: userInfo.mid, mid: userInfo.mid,
rid: epId, // bangumi rid: epId, // bangumi
@@ -494,6 +497,10 @@ class BangumiIntroController extends CommonController {
); );
if (result['status']) { if (result['status']) {
favFolderData.value = result['data']; favFolderData.value = result['data'];
favIds = favFolderData.value.list
?.where((item) => item.favState == 1)
.map((item) => item.id)
.toList();
} }
return result; return result;
} }

View File

@@ -103,8 +103,8 @@ Widget forWard(item, context, source, callback, {floor = 1}) {
picsNodes(item.modules.moduleDynamic.major.opus.pics, callback), picsNodes(item.modules.moduleDynamic.major.opus.pics, callback),
// semanticsLabel: '动态图片', // semanticsLabel: '动态图片',
), ),
if (item.modules.moduleDynamic.additional != null) // if (item.modules.moduleDynamic.additional != null)
const SizedBox(height: 4), // const SizedBox(height: 4),
], ],
const SizedBox(height: 4), const SizedBox(height: 4),
], ],

View File

@@ -61,8 +61,7 @@ class VideoIntroController extends GetxController
RxBool hasFav = false.obs; RxBool hasFav = false.obs;
bool isLogin = false; bool isLogin = false;
Rx<FavFolderData> favFolderData = FavFolderData().obs; Rx<FavFolderData> favFolderData = FavFolderData().obs;
List addMediaIdsNew = []; List? favIds;
List delMediaIdsNew = [];
// 关注状态 默认未关注 // 关注状态 默认未关注
RxMap followStatus = {}.obs; RxMap followStatus = {}.obs;
@@ -414,14 +413,22 @@ class VideoIntroController extends GetxController
}); });
return; return;
} }
List addMediaIdsNew = [];
List delMediaIdsNew = [];
try { try {
for (var i in favFolderData.value.list!.toList()) { for (var i in favFolderData.value.list!.toList()) {
bool isFaved = favIds?.contains(i.id) == true;
if (i.favState == 1) { if (i.favState == 1) {
if (isFaved.not) {
addMediaIdsNew.add(i.id); addMediaIdsNew.add(i.id);
}
} else { } else {
if (isFaved) {
delMediaIdsNew.add(i.id); delMediaIdsNew.add(i.id);
} }
} }
}
} catch (e) { } catch (e) {
debugPrint(e.toString()); debugPrint(e.toString());
} }
@@ -433,8 +440,6 @@ class VideoIntroController extends GetxController
); );
SmartDialog.dismiss(); SmartDialog.dismiss();
if (result['status']) { if (result['status']) {
addMediaIdsNew = [];
delMediaIdsNew = [];
Get.back(); Get.back();
// 重新获取收藏状态 // 重新获取收藏状态
await queryHasFavVideo(); await queryHasFavVideo();
@@ -495,10 +500,15 @@ class VideoIntroController extends GetxController
} }
Future queryVideoInFolder() async { Future queryVideoInFolder() async {
favIds = null;
var result = await VideoHttp.videoInFolder( var result = await VideoHttp.videoInFolder(
mid: userInfo.mid, rid: IdUtils.bv2av(bvid)); mid: userInfo.mid, rid: IdUtils.bv2av(bvid));
if (result['status']) { if (result['status']) {
favFolderData.value = result['data']; favFolderData.value = result['data'];
favIds = favFolderData.value.list
?.where((item) => item.favState == 1)
.map((item) => item.id)
.toList();
} }
return result; return result;
} }
@@ -507,14 +517,10 @@ class VideoIntroController extends GetxController
onChoose(bool checkValue, int index) { onChoose(bool checkValue, int index) {
feedBack(); feedBack();
List<FavFolderItemData> datalist = favFolderData.value.list!; List<FavFolderItemData> datalist = favFolderData.value.list!;
for (var i = 0; i < datalist.length; i++) { datalist[index].favState = checkValue ? 1 : 0;
if (i == index) { datalist[index].mediaCount = checkValue
datalist[i].favState = checkValue == true ? 1 : 0; ? datalist[index].mediaCount! + 1
datalist[i].mediaCount = checkValue == true : datalist[index].mediaCount! - 1;
? datalist[i].mediaCount! + 1
: datalist[i].mediaCount! - 1;
}
}
favFolderData.value.list = datalist; favFolderData.value.list = datalist;
favFolderData.refresh(); favFolderData.refresh();
} }