opt query pgc timeline

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-09-10 19:56:27 +08:00
parent f0f5224677
commit da17725616
5 changed files with 34 additions and 11 deletions

View File

@@ -75,7 +75,7 @@ class PgcHttp {
}
}
static Future<LoadingState<List<Result>?>> pgcTimeline({
static Future<LoadingState<List<TimelineResult>?>> pgcTimeline({
int types = 1, // 1`番剧`<br />3`电影`<br />4`国创` |
required int before,
required int after,

View File

@@ -3,7 +3,7 @@ import 'package:PiliPlus/models_new/pgc/pgc_timeline/result.dart';
class PgcTimeline {
int? code;
String? message;
List<Result>? result;
List<TimelineResult>? result;
PgcTimeline({this.code, this.message, this.result});
@@ -11,7 +11,7 @@ class PgcTimeline {
code: json['code'] as int?,
message: json['message'] as String?,
result: (json['result'] as List<dynamic>?)
?.map((e) => Result.fromJson(e as Map<String, dynamic>))
?.map((e) => TimelineResult.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -1,13 +1,13 @@
import 'package:PiliPlus/models_new/pgc/pgc_timeline/episode.dart';
class Result {
class TimelineResult {
String? date;
int? dateTs;
int? dayOfWeek;
List<Episode>? episodes;
int? isToday;
Result({
TimelineResult({
this.date,
this.dateTs,
this.dayOfWeek,
@@ -15,7 +15,7 @@ class Result {
this.isToday,
});
factory Result.fromJson(Map<String, dynamic> json) => Result(
factory TimelineResult.fromJson(Map<String, dynamic> json) => TimelineResult(
date: json['date'] as String?,
dateTs: json['date_ts'] as int?,
dayOfWeek: json['day_of_week'] as int?,
@@ -24,4 +24,12 @@ class Result {
.toList(),
isToday: json['is_today'] as int?,
);
void operator +(TimelineResult other) {
if (dateTs == other.dateTs) {
if (other.episodes case final list?) {
(episodes ??= <Episode>[]).addAll(list);
}
}
}
}

View File

@@ -60,12 +60,27 @@ class PgcController
ScrollController? followController;
// timeline
late Rx<LoadingState<List<Result>?>> timelineState =
LoadingState<List<Result>?>.loading().obs;
late Rx<LoadingState<List<TimelineResult>?>> timelineState =
LoadingState<List<TimelineResult>?>.loading().obs;
Future<void> queryPgcTimeline() async {
final res = await PgcHttp.pgcTimeline(types: 1, before: 6, after: 6);
timelineState.value = res;
final res = await Future.wait([
PgcHttp.pgcTimeline(types: 1, before: 6, after: 6),
PgcHttp.pgcTimeline(types: 4, before: 6, after: 6),
]);
var list1 = res.first.dataOrNull;
var list2 = res[1].dataOrNull;
if (list1 != null &&
list2 != null &&
list1.isNotEmpty &&
list2.isNotEmpty) {
for (var i = 0; i < list1.length; i++) {
list1[i] + list2[i];
}
} else {
list1 ??= list2;
}
timelineState.value = Success(list1);
}
// 我的订阅

View File

@@ -77,7 +77,7 @@ class _PgcPageState extends CommonPageState<PgcPage, PgcController>
Widget _buildTimeline(
ThemeData theme,
LoadingState<List<Result>?> loadingState,
LoadingState<List<TimelineResult>?> loadingState,
) => switch (loadingState) {
Loading() => loadingWidget,
Success(:var response) =>