From bae22b6de75c3f056cca774d84d2c878cae9ea1e Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 26 Nov 2024 11:11:45 +0800 Subject: [PATCH] opt: sponsorblock: update data after posted Signed-off-by: bggRGjQaUbCoE --- lib/pages/video/detail/controller.dart | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 7ac9a591..770704bc 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -540,7 +540,7 @@ class VideoDetailController extends GetxController }, ); - Future _sponsorBlock() async { + Future _querySponsorBlock() async { dynamic result = await Request().get( '${GStorage.blockServer}/api/skipSegments', data: { @@ -549,6 +549,10 @@ class VideoDetailController extends GetxController }, options: _options, ); + _handleSBData(result); + } + + void _handleSBData(result) { if (result.data is List && result.data.isNotEmpty) { try { List list = @@ -558,7 +562,9 @@ class VideoDetailController extends GetxController .toList() .map((item) => item.first.name) .toList(); - segmentList.value = (result.data as List) + + // segmentList + segmentList.addAll((result.data as List) .where((item) => enableList.contains(item['category']) && item['segment'][1] >= item['segment'][0]) @@ -584,8 +590,11 @@ class VideoDetailController extends GetxController hasSkipped: false, ); }, - ).toList(); - _segmentProgressList = segmentList.map((item) { + ).toList()); + + // _segmentProgressList + _segmentProgressList ??= []; + _segmentProgressList!.addAll(segmentList.map((item) { double start = (item.segment.first / ((data.timeLength ?? 0) / 1000)) .clamp(0.0, 1.0); double end = (item.segment.second / ((data.timeLength ?? 0) / 1000)) @@ -595,7 +604,7 @@ class VideoDetailController extends GetxController (start == end && end != 0) ? (end + 0.01).clamp(0.0, 1.0) : end, _getColor(item.segmentType), ); - }).toList(); + }).toList()); } catch (e) { debugPrint('failed to parse sponsorblock: $e'); } @@ -862,7 +871,7 @@ class VideoDetailController extends GetxController if (result['status']) { data = result['data']; if (enableSponsorBlock) { - await _sponsorBlock(); + await _querySponsorBlock(); } if (data.acceptDesc!.isNotEmpty && data.acceptDesc!.contains('试看')) { SmartDialog.showToast( @@ -1357,6 +1366,9 @@ class VideoDetailController extends GetxController Get.back(); SmartDialog.showToast('提交成功'); list?.clear(); + _handleSBData(res); + plPlayerController.segmentList.value = + _segmentProgressList ?? []; } else { SmartDialog.showToast( '提交失败: ${{