From e2efb0bb89ff9c1f699986e28906898cf660e4cc Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 18 Sep 2024 10:00:24 +0800 Subject: [PATCH] Revert "Revert: a669488" This reverts commit 31000389ea9179f74aa2ae28c5e8f2b718f4ed64. --- lib/http/api.dart | 2 +- lib/http/reply.dart | 7 +++--- lib/models/video/reply/data.dart | 26 +++++++++++--------- lib/pages/common/reply_controller.dart | 4 ++- lib/pages/dynamics/detail/controller.dart | 2 +- lib/pages/html/controller.dart | 2 +- lib/pages/video/detail/reply/controller.dart | 2 +- 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/http/api.dart b/lib/http/api.dart index 71b5e386..ff524e2f 100644 --- a/lib/http/api.dart +++ b/lib/http/api.dart @@ -129,7 +129,7 @@ class Api { // 评论列表 // https://api.bilibili.com/x/v2/reply/main?csrf=6e22efc1a47225ea25f901f922b5cfdd&mode=3&oid=254175381&pagination_str=%7B%22offset%22:%22%22%7D&plat=1&seek_rpid=0&type=11 - static const String replyList = '/x/v2/reply'; + static const String replyList = '/x/v2/reply/main'; // 楼中楼 static const String replyReplyList = '/x/v2/reply/reply'; diff --git a/lib/http/reply.dart b/lib/http/reply.dart index dacea1e6..dfa5976a 100644 --- a/lib/http/reply.dart +++ b/lib/http/reply.dart @@ -13,9 +13,9 @@ import 'init.dart'; class ReplyHttp { static Future replyList({ required int oid, + required String nextOffset, required int type, int sort = 1, - required int page, }) async { Options? options = GStorage.userInfo.get('userInfoCache') == null ? Options( @@ -26,9 +26,8 @@ class ReplyHttp { data: { 'oid': oid, 'type': type, - 'sort': sort, - 'pn': page, - 'ps': 20, + 'pagination_str': '{"offset":"${nextOffset.replaceAll('"', '\\"')}"}', + 'mode': sort + 2, //2:按时间排序;3:按热度排序 }, options: options, ); diff --git a/lib/models/video/reply/data.dart b/lib/models/video/reply/data.dart index 8c5be8b2..15735c53 100644 --- a/lib/models/video/reply/data.dart +++ b/lib/models/video/reply/data.dart @@ -6,29 +6,31 @@ import 'upper.dart'; class ReplyData { ReplyData({ - this.page, + this.cursor, this.config, this.replies, this.topReplies, this.upper, }); - ReplyPage? page; + ReplyCursor? cursor; ReplyConfig? config; late List? replies; late List? topReplies; ReplyUpper? upper; ReplyData.fromJson(Map json) { - page = ReplyPage.fromJson(json['page']); + cursor = ReplyCursor.fromJson(json['cursor']); config = ReplyConfig.fromJson(json['config']); replies = json['replies'] != null - ? List.from(json['replies'].map( - (item) => ReplyItemModel.fromJson(item, json['upper']['mid']))) + ? List.from(json['replies'] + .map( + (item) => ReplyItemModel.fromJson(item, json['upper']['mid']))) : []; topReplies = json['top_replies'] != null - ? List.from(json['top_replies'].map( - (item) => ReplyItemModel.fromJson(item, json['upper']['mid'], + ? List.from(json['top_replies'] + .map((item) => ReplyItemModel.fromJson( + item, json['upper']['mid'], isTopStatus: true))) : []; upper = ReplyUpper.fromJson(json['upper']); @@ -56,13 +58,15 @@ class ReplyReplyData { page = ReplyPage.fromJson(json['page']); config = ReplyConfig.fromJson(json['config']); replies = json['replies'] != null - ? List.from(json['replies'].map( + ? List.from(json['replies'] + .map( (item) => ReplyItemModel.fromJson(item, json['upper']['mid']))) : []; topReplies = json['top_replies'] != null - ? List.from(json['top_replies'].map( - (item) => ReplyItemModel.fromJson(item, json['upper']['mid'], - isTopStatus: true))) + ? List.from(json['top_replies'] + .map((item) => ReplyItemModel.fromJson( + item, json['upper']['mid'], + isTopStatus: true))) : []; upper = ReplyUpper.fromJson(json['upper']); root = ReplyItemModel.fromJson(json['root'], json['upper']['mid']); diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 0484c2a7..7e08c156 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -41,6 +41,7 @@ abstract class ReplyController extends CommonController { @override Future onRefresh() { + nextOffset = ''; noMore.value = ''; return super.onRefresh(); } @@ -54,6 +55,7 @@ abstract class ReplyController extends CommonController { @override bool customHandleResponse(Success response) { List replies = response.response.replies; + nextOffset = response.response.cursor.paginationReply.nextOffset ?? ""; if (replies.isNotEmpty) { noMore.value = '加载中...'; @@ -76,7 +78,7 @@ abstract class ReplyController extends CommonController { } } replies.insertAll(0, response.response.topReplies); - count.value = response.response.page.count ?? 0; + count.value = response.response.cursor.allCount ?? 0; } else { replies.insertAll( 0, diff --git a/lib/pages/dynamics/detail/controller.dart b/lib/pages/dynamics/detail/controller.dart index a810b0ce..de0d805c 100644 --- a/lib/pages/dynamics/detail/controller.dart +++ b/lib/pages/dynamics/detail/controller.dart @@ -35,8 +35,8 @@ class DynamicDetailController extends ReplyController { @override Future customGetData() => ReplyHttp.replyList( oid: oid!, + nextOffset: nextOffset, type: type!, sort: sortType.index, - page: currentPage, ); } diff --git a/lib/pages/html/controller.dart b/lib/pages/html/controller.dart index 112cd803..a876eb41 100644 --- a/lib/pages/html/controller.dart +++ b/lib/pages/html/controller.dart @@ -43,8 +43,8 @@ class HtmlRenderController extends ReplyController { @override Future customGetData() => ReplyHttp.replyList( oid: oid.value, + nextOffset: nextOffset, type: type, sort: sortType.index, - page: currentPage, ); } diff --git a/lib/pages/video/detail/reply/controller.dart b/lib/pages/video/detail/reply/controller.dart index be0420c6..f815d85b 100644 --- a/lib/pages/video/detail/reply/controller.dart +++ b/lib/pages/video/detail/reply/controller.dart @@ -19,8 +19,8 @@ class VideoReplyController extends ReplyController { @override Future customGetData() => ReplyHttp.replyList( oid: aid!, + nextOffset: nextOffset, type: ReplyType.video.index, sort: sortType.index, - page: currentPage, ); }