diff --git a/lib/models/common/video/source_type.dart b/lib/models/common/video/source_type.dart index b622856e..8dc97389 100644 --- a/lib/models/common/video/source_type.dart +++ b/lib/models/common/video/source_type.dart @@ -1,10 +1,38 @@ +import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pbenum.dart' + show PlaylistSource; + enum SourceType { - normal(-1), - archive(1), - watchLater(2), - fav(3), - playlist(3); + normal( + mediaType: -1, + playlistSource: PlaylistSource.UP_ARCHIVE, + ), + archive( + mediaType: 1, + extraId: 1, + playlistSource: PlaylistSource.MEDIA_LIST, + ), + watchLater( + mediaType: 2, + extraId: 2, + playlistSource: PlaylistSource.MEDIA_LIST, + ), + fav( + mediaType: 3, + extraId: 2, + playlistSource: PlaylistSource.USER_FAVOURITE, + ), + playlist( + mediaType: 3, + extraId: 4, + playlistSource: PlaylistSource.MEDIA_LIST, + ); final int mediaType; - const SourceType(this.mediaType); + final int? extraId; + final PlaylistSource playlistSource; + const SourceType({ + required this.mediaType, + this.extraId, + required this.playlistSource, + }); } diff --git a/lib/pages/audio/controller.dart b/lib/pages/audio/controller.dart index fb179752..272dd9df 100644 --- a/lib/pages/audio/controller.dart +++ b/lib/pages/audio/controller.dart @@ -40,6 +40,7 @@ class AudioController extends GetxController late Int64 oid; late List subId; late int itemType; + Int64? extraId; late final PlaylistSource from; late final isVideo = itemType == 1; @@ -86,6 +87,10 @@ class AudioController extends GetxController itemType = args['itemType']; from = args['from']; _start = args['start']; + final int? extraId = args['extraId']; + if (extraId != null) { + this.extraId = Int64(extraId); + } if (args['heroTag'] case String heroTag) { try { _videoDetailController = Get.find(tag: heroTag); @@ -134,6 +139,7 @@ class AudioController extends GetxController : isLoadNext ? _next : null, + extraId: extraId, ); if (res.isSuccess) { final PlaylistResp data = res.data; @@ -193,7 +199,7 @@ class AudioController extends GetxController (e) => e.id <= cacheAudioQa, (a, b) => a.id > b.id ? a : b, ); - _onOpenMedia(VideoUtils.getCdnUrl(audio.baseUrl)); + _onOpenMedia(VideoUtils.getCdnUrl(audio)); } else if (playInfo.hasPlayUrl()) { final playUrl = playInfo.playUrl; final durls = playUrl.durl; diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 5a184f96..f5bf33a7 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -39,6 +39,7 @@ class AudioPage extends StatefulWidget { String? heroTag, Duration? start, String? audioUrl, + int? extraId, }) => Get.toNamed( '/audio', arguments: { @@ -50,6 +51,7 @@ class AudioPage extends StatefulWidget { 'heroTag': ?heroTag, 'start': ?start, 'audioUrl': ?audioUrl, + 'extraId': ?extraId, }, ); } diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index 934efd05..f6f174e0 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -87,7 +87,7 @@ class _LaterViewChildPageState extends State .counts[LaterViewType.all], 'favTitle': '稍后再看', 'mediaId': _laterController.accountService.mid, - 'desc': false, + 'desc': _laterController.asc.value, 'isContinuePlaying': index != 0, } : null, diff --git a/lib/pages/later/controller.dart b/lib/pages/later/controller.dart index eafaefdb..6797e4a0 100644 --- a/lib/pages/later/controller.dart +++ b/lib/pages/later/controller.dart @@ -178,7 +178,7 @@ class LaterController extends MultiSelectController 'count': baseCtr.counts[LaterViewType.all], 'favTitle': '稍后再看', 'mediaId': accountService.mid, - 'desc': false, + 'desc': asc.value, }, ); break; diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 7b0ee1f8..50ff160e 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -3,8 +3,6 @@ import 'dart:ui'; import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; -import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pbenum.dart' - show PlaylistSource; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/init.dart'; @@ -1753,12 +1751,14 @@ class VideoDetailController extends GetxController void toAudioPage() { AudioPage.toAudioPage( itemType: 1, + id: args['mediaId'], oid: aid, subId: [cid.value], - from: PlaylistSource.UP_ARCHIVE, + from: sourceType.playlistSource, heroTag: autoPlay.value ? heroTag : null, start: playedTime, audioUrl: audioUrl, + extraId: sourceType.extraId, ); } }