mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: handle response
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -27,11 +27,9 @@ class AboutPage extends StatefulWidget {
|
||||
|
||||
class _AboutPageState extends State<AboutPage> {
|
||||
final AboutController _aboutController = Get.put(AboutController());
|
||||
static const String _sourceCodeUrl =
|
||||
'https://github.com/bggRGjQaUbCoE/PiliPlus';
|
||||
static const String _originSourceCodeUrl =
|
||||
'https://github.com/guozhigq/pilipala';
|
||||
static const String _upstreamUrl = 'https://github.com/orz12/PiliPalaX';
|
||||
final String _sourceCodeUrl = 'https://github.com/bggRGjQaUbCoE/PiliPlus';
|
||||
final String _originSourceCodeUrl = 'https://github.com/guozhigq/pilipala';
|
||||
final String _upstreamUrl = 'https://github.com/orz12/PiliPalaX';
|
||||
|
||||
late int _pressCount = 0;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:PiliPlus/http/bangumi.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/bangumi/pgc_index/condition.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:get/get.dart' hide Condition;
|
||||
|
||||
class PgcIndexController extends CommonController {
|
||||
@@ -55,13 +56,13 @@ class PgcIndexController extends CommonController {
|
||||
response.response['has_next'] == 0) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (response.response['list'] == null ||
|
||||
(response.response['list'] as List?)?.isEmpty == true) {
|
||||
if (isEnd.not && (response.response['list'] as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response['list']
|
||||
?.insertAll(0, (loadingState.value as Success).response);
|
||||
response.response['list'] ??= [];
|
||||
response.response['list']!
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response['list']);
|
||||
return true;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'package:PiliPlus/common/widgets/loading_widget.dart';
|
||||
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/user/black.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -24,9 +26,9 @@ class _BlackListPageState extends State<BlackListPage> {
|
||||
void dispose() {
|
||||
List list = _blackListController.loadingState.value is Success
|
||||
? (_blackListController.loadingState.value as Success).response
|
||||
: <int>[];
|
||||
: <BlackListItem>[];
|
||||
GStorage.setBlackMidsList(
|
||||
list.isNotEmpty ? list.map<int>((e) => e.mid!).toList() : <int>[]);
|
||||
list.isNotEmpty ? list.map((e) => e.mid!).toList() : <int>[]);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -111,18 +113,20 @@ class BlackListController extends CommonController {
|
||||
@override
|
||||
bool customHandleResponse(Success response) {
|
||||
total.value = response.response.total;
|
||||
if (response.response.list.isEmpty) {
|
||||
if ((response.response.list as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response.list
|
||||
?.insertAll(0, (loadingState.value as Success).response);
|
||||
response.response.list ??= <BlackListItem>[];
|
||||
response.response.list!
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
if (response.response.list.length >= total.value) {
|
||||
if (isEnd.not && response.response.list.length >= total.value) {
|
||||
isEnd = true;
|
||||
}
|
||||
loadingState.value = LoadingState.success(
|
||||
response.response.list.isNotEmpty ? response.response.list : <int>[]);
|
||||
loadingState.value = LoadingState.success(response.response.list.isNotEmpty
|
||||
? response.response.list
|
||||
: <BlackListItem>[]);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -133,7 +137,7 @@ class BlackListController extends CommonController {
|
||||
list.removeWhere((e) => e.mid == mid);
|
||||
total.value = total.value - 1;
|
||||
loadingState.value =
|
||||
LoadingState.success(list.isNotEmpty ? list : <int>[]);
|
||||
LoadingState.success(list.isNotEmpty ? list : <BlackListItem>[]);
|
||||
SmartDialog.showToast(result['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,9 @@ abstract class CommonController extends GetxController {
|
||||
LoadingState response = await customGetData();
|
||||
if (response is Success) {
|
||||
if (!customHandleResponse(response)) {
|
||||
isEnd = response.response.isEmpty;
|
||||
if ((response.response as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
List currentList = loadingState.value is Success
|
||||
? (loadingState.value as Success).response
|
||||
: [];
|
||||
|
||||
@@ -116,7 +116,7 @@ abstract class ReplyController extends CommonController {
|
||||
} else if (loadingState.value is Success) {
|
||||
replies.insertAll(0, (loadingState.value as Success).response.replies);
|
||||
}
|
||||
if (replies.length >= count.value) {
|
||||
if (isEnd.not && replies.length >= count.value) {
|
||||
isEnd = true;
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response);
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/msg.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/main/controller.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
@@ -33,23 +34,23 @@ class DynamicsTabController extends CommonController {
|
||||
@override
|
||||
bool customHandleResponse(Success response) {
|
||||
offset = response.response.offset;
|
||||
isEnd = response.response.items.isEmpty;
|
||||
if ((response.response.items as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response.items
|
||||
response.response.items ??= <DynamicItemModel>[];
|
||||
response.response.items!
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response.items);
|
||||
return true;
|
||||
}
|
||||
|
||||
late final antiGoodsDyn = GStorage.antiGoodsDyn;
|
||||
|
||||
@override
|
||||
Future<LoadingState> customGetData() => DynamicsHttp.followDynamic(
|
||||
type: dynamicsType == "up" ? "all" : dynamicsType,
|
||||
offset: offset,
|
||||
mid: dynamicsType == "up" ? mid : -1,
|
||||
antiGoodsDyn: antiGoodsDyn,
|
||||
);
|
||||
|
||||
Future onRemove(dynamic dynamicId) async {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:PiliPlus/http/fan.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/fans/result.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
@@ -28,11 +30,12 @@ class FansController extends CommonController {
|
||||
@override
|
||||
bool customHandleResponse(Success response) {
|
||||
if ((currentPage == 1 && response.response.total < ps) ||
|
||||
response.response.list.isEmpty) {
|
||||
(response.response.list as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response.list
|
||||
response.response.list ??= <FansItemModel>[];
|
||||
response.response.list!
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response.list);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/user/fav_folder.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/http/user.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
class FavController extends CommonController {
|
||||
@@ -23,11 +25,13 @@ class FavController extends CommonController {
|
||||
|
||||
@override
|
||||
bool customHandleResponse(Success response) {
|
||||
if (!response.response.hasMore || response.response.list.isEmpty) {
|
||||
if (response.response.hasMore == false ||
|
||||
(response.response.list as List?).isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response.list
|
||||
response.response.list ??= <FavFolderItemData>[];
|
||||
response.response.list!
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response.list);
|
||||
|
||||
@@ -45,12 +45,14 @@ class FavDetailController extends MultiSelectController {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
data.medias?.insertAll(
|
||||
data.medias ??= <FavDetailItemData>[];
|
||||
data.medias!.insertAll(
|
||||
0,
|
||||
List<FavDetailItemData>.from((loadingState.value as Success).response),
|
||||
);
|
||||
}
|
||||
if ((data.medias?.length ?? 0) >= (data.info?.mediaCount ?? 0)) {
|
||||
if (isEnd.not &&
|
||||
(data.medias?.length ?? 0) >= (data.info?.mediaCount ?? 0)) {
|
||||
isEnd = true;
|
||||
}
|
||||
loadingState.value = LoadingState.success(data.medias);
|
||||
|
||||
@@ -46,10 +46,10 @@ class FavSearchController extends CommonController {
|
||||
|
||||
@override
|
||||
bool customHandleResponse(Success response) {
|
||||
List currentList = loadingState.value is Success
|
||||
late List currentList = loadingState.value is Success
|
||||
? (loadingState.value as Success).response
|
||||
: [];
|
||||
List dataList = searchType == SearchType.fav
|
||||
List? dataList = searchType == SearchType.fav
|
||||
? (currentPage == 1
|
||||
? response.response.medias
|
||||
: currentList + response.response.medias)
|
||||
@@ -57,7 +57,7 @@ class FavSearchController extends CommonController {
|
||||
? response.response.list
|
||||
: currentList + response.response.list);
|
||||
isEnd = searchType == SearchType.fav
|
||||
? !response.response.hasMore
|
||||
? response.response.hasMore == false
|
||||
: response.response.list.isEmpty;
|
||||
loadingState.value = LoadingState.success(dataList);
|
||||
return true;
|
||||
|
||||
@@ -35,7 +35,8 @@ class HistoryController extends MultiSelectController {
|
||||
max = data.list?.lastOrNull?.history?.oid;
|
||||
viewAt = data.list?.lastOrNull?.viewAt;
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
data.list?.insertAll(
|
||||
data.list ??= <HisListItem>[];
|
||||
data.list!.insertAll(
|
||||
0,
|
||||
List<HisListItem>.from((loadingState.value as Success).response),
|
||||
);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/member.dart';
|
||||
import 'package:PiliPlus/models/space_article/item.dart';
|
||||
import 'package:PiliPlus/models/space_article/data.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
@@ -25,10 +26,10 @@ class MemberArticleCtr extends CommonController {
|
||||
if (data.item.isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage == 1) {
|
||||
count = data.count ?? -1;
|
||||
} else if (loadingState.value is Success) {
|
||||
data.item?.insertAll(0, (loadingState.value as Success).response);
|
||||
count = data.count ?? -1;
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
data.item ??= <Item>[];
|
||||
data.item!.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
if ((data.item?.length ?? -1) >= count) {
|
||||
isEnd = true;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/member.dart';
|
||||
import 'package:PiliPlus/models/space_archive/data.dart';
|
||||
import 'package:PiliPlus/models/space_archive/item.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/member/new/content/member_contribute/member_contribute.dart'
|
||||
show ContributeType;
|
||||
@@ -36,7 +37,8 @@ class MemberBangumiCtr extends CommonController {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
data.item?.insertAll(0, (loadingState.value as Success).response);
|
||||
data.item ??= <Item>[];
|
||||
data.item!.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
if (data.item!.length >= count) {
|
||||
isEnd = true;
|
||||
|
||||
@@ -59,14 +59,18 @@ class MemberVideoCtr extends CommonController {
|
||||
episodicButton.refresh();
|
||||
next = data.next;
|
||||
aid = data.item?.lastOrNull?.param;
|
||||
isEnd =
|
||||
type == ContributeType.video ? data.hasNext == false : data.next == 0;
|
||||
if (currentPage == 0) {
|
||||
count.value = type == ContributeType.season
|
||||
? (data.item?.length ?? -1)
|
||||
: (data.count ?? -1);
|
||||
} else if (loadingState.value is Success) {
|
||||
data.item?.insertAll(0, (loadingState.value as Success).response);
|
||||
if ((type == ContributeType.video
|
||||
? data.hasNext == false
|
||||
: data.next == 0) ||
|
||||
data.item.isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
count.value = type == ContributeType.season
|
||||
? (data.item?.length ?? -1)
|
||||
: (data.count ?? -1);
|
||||
if (currentPage != 0 && loadingState.value is Success) {
|
||||
data.item ??= <Item>[];
|
||||
data.item!.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(data.item);
|
||||
return true;
|
||||
|
||||
@@ -4,14 +4,12 @@ import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:PiliPlus/http/member.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
|
||||
class MemberDynamicsController extends CommonController {
|
||||
MemberDynamicsController(this.mid);
|
||||
int mid;
|
||||
String offset = '';
|
||||
late final antiGoodsDyn = GStorage.antiGoodsDyn;
|
||||
|
||||
@override
|
||||
void onInit() async {
|
||||
@@ -37,8 +35,11 @@ class MemberDynamicsController extends CommonController {
|
||||
bool customHandleResponse(Success response) {
|
||||
DynamicsDataModel data = response.response;
|
||||
offset = data.offset?.isNotEmpty == true ? data.offset! : '-1';
|
||||
isEnd = !(data.hasMore ?? false);
|
||||
if (data.hasMore == false || data.items.isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
data.items ??= <DynamicItemModel>[];
|
||||
data.items?.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(data.items);
|
||||
@@ -49,7 +50,6 @@ class MemberDynamicsController extends CommonController {
|
||||
Future<LoadingState> customGetData() => MemberHttp.memberDynamic(
|
||||
offset: offset,
|
||||
mid: mid,
|
||||
antiGoodsDyn: antiGoodsDyn,
|
||||
);
|
||||
|
||||
Future onRemove(dynamicId) async {
|
||||
|
||||
@@ -46,7 +46,7 @@ class SearchPanelController extends CommonController {
|
||||
isEnd = response.response.list.isEmpty;
|
||||
if (currentPage != 1 && loadingState.value is Success) {
|
||||
response.response.list
|
||||
?.insertAll(0, (loadingState.value as Success).response);
|
||||
.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(response.response.list);
|
||||
if (searchType == SearchType.video &&
|
||||
|
||||
@@ -24,7 +24,7 @@ class SponsorBlockPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
static const _url = 'https://github.com/hanydd/BilibiliSponsorBlock';
|
||||
final _url = 'https://github.com/hanydd/BilibiliSponsorBlock';
|
||||
final _textController = TextEditingController();
|
||||
late double _blockLimit;
|
||||
late List<Pair<SegmentType, SkipType>> _blockSettings;
|
||||
|
||||
@@ -2086,6 +2086,9 @@ List<SettingsModel> get extraSettings => [
|
||||
),
|
||||
setKey: SettingBoxKey.antiGoodsDyn,
|
||||
defaultVal: false,
|
||||
onChanged: (value) {
|
||||
GStorage.antiGoodsDyn = value;
|
||||
},
|
||||
),
|
||||
SettingsModel(
|
||||
settingsType: SettingsType.sw1tch,
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/member.dart';
|
||||
import 'package:PiliPlus/models/space_archive/data.dart';
|
||||
import 'package:PiliPlus/models/space_archive/item.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/member/new/content/member_contribute/member_contribute.dart'
|
||||
show ContributeType;
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
@@ -55,11 +57,13 @@ class HorizontalMemberPageController extends CommonController {
|
||||
Data data = response.response;
|
||||
next = data.next;
|
||||
aid = data.item?.lastOrNull?.param;
|
||||
isEnd = data.hasNext == false;
|
||||
if (currentPage == 0) {
|
||||
count.value = data.count ?? -1;
|
||||
} else if (loadingState.value is Success) {
|
||||
data.item?.insertAll(0, (loadingState.value as Success).response);
|
||||
if (data.hasNext == false || data.item.isNullOrEmpty) {
|
||||
isEnd = true;
|
||||
}
|
||||
count.value = data.count ?? -1;
|
||||
if (currentPage != 0 && loadingState.value is Success) {
|
||||
data.item ??= <Item>[];
|
||||
data.item!.insertAll(0, (loadingState.value as Success).response);
|
||||
}
|
||||
loadingState.value = LoadingState.success(data.item);
|
||||
return true;
|
||||
|
||||
@@ -2378,9 +2378,11 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
} else {
|
||||
videoDetailController.childKey.currentState?.showBottomSheet(
|
||||
backgroundColor: Colors.transparent,
|
||||
(context) => ViewPointsPage(
|
||||
child: listSheetContent(),
|
||||
),
|
||||
(context) => GStorage.collapsibleVideoPage
|
||||
? ViewPointsPage(
|
||||
child: listSheetContent(),
|
||||
)
|
||||
: listSheetContent(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user