Files
PiliPlus/lib/pages/rcmd/controller.dart
dom 3b68fe467d opt rcmd
Closes #2208

Signed-off-by: dom <githubaccount56556@proton.me>
2026-05-25 19:38:28 +08:00

60 lines
1.4 KiB
Dart

import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
class RcmdController extends CommonListController {
late bool enableSaveLastData = Pref.enableSaveLastData;
final bool appRcmd = Pref.appRcmd;
int? lastRefreshAt;
late bool savedRcmdTip = Pref.savedRcmdTip;
@override
bool get isEnd => false;
@override
void onInit() {
super.onInit();
page = 0;
queryData();
}
@override
Future<LoadingState> customGetData() {
return appRcmd
? VideoHttp.rcmdVideoListApp(freshIdx: page)
: VideoHttp.rcmdVideoList(freshIdx: page, ps: 20);
}
@override
bool handleError(String? errMsg) {
return enableSaveLastData;
}
@override
void handleListResponse(List dataList) {
if (enableSaveLastData && page == 0) {
if (loadingState.value case Success(:final response)) {
if (response != null && response.isNotEmpty) {
if (savedRcmdTip) {
lastRefreshAt = dataList.length;
}
if (response.length > 200) {
dataList.addAll(response.take(50));
} else {
dataList.addAll(response);
}
}
}
}
}
@override
Future<void> onRefresh() {
page = 0;
isEnd = false;
return queryData();
}
}