diff --git a/lib/common/widgets/video_popup_menu.dart b/lib/common/widgets/video_popup_menu.dart index 21bd87107..4667a4ce1 100644 --- a/lib/common/widgets/video_popup_menu.dart +++ b/lib/common/widgets/video_popup_menu.dart @@ -183,13 +183,13 @@ class VideoPopupMenu extends StatelessWidget { goto: item.goto!, ); SmartDialog.dismiss(); - SmartDialog.showToast( - res['status'] - ? (r?.toast ?? f?.toast) - : res['msg'], - ); - if (res['status']) { + if (res.isSuccess) { + SmartDialog.showToast( + r?.toast ?? f!.toast!, + ); onRemove?.call(); + } else { + res.toast(); } }, ); @@ -243,9 +243,9 @@ class VideoPopupMenu extends StatelessWidget { ); SmartDialog.dismiss(); SmartDialog.showToast( - res['status'] + res.isSuccess ? "成功" - : res['msg'], + : res.toString(), ); Get.back(); }, @@ -289,13 +289,11 @@ class VideoPopupMenu extends StatelessWidget { type: true, ); SmartDialog.dismiss(); - SmartDialog.showToast( - res['status'] - ? "点踩成功" - : res['msg'], - ); - if (res['status']) { + if (res.isSuccess) { + SmartDialog.showToast('点踩成功'); onRemove?.call(); + } else { + res.toast(); } }, style: FilledButton.styleFrom( @@ -310,16 +308,16 @@ class VideoPopupMenu extends StatelessWidget { SmartDialog.showLoading( msg: '正在提交', ); - var res = + final res = await VideoHttp.dislikeVideo( bvid: videoItem.bvid!, type: false, ); SmartDialog.dismiss(); SmartDialog.showToast( - res['status'] - ? "取消踩" - : res['msg'], + res.isSuccess + ? '取消踩' + : res.toString(), ); }, style: FilledButton.styleFrom( @@ -371,10 +369,11 @@ class VideoPopupMenu extends StatelessWidget { act: 5, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { onRemove?.call(); + } else { + res.toast(); } - SmartDialog.showToast(res['msg'] ?? '成功'); }, child: const Text('确认'), ), diff --git a/lib/http/danmaku_block.dart b/lib/http/danmaku_block.dart index aae2c2b47..75a1705e4 100644 --- a/lib/http/danmaku_block.dart +++ b/lib/http/danmaku_block.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/models/user/danmaku_block.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:dio/dio.dart'; -class DanmakuFilterHttp { +abstract final class DanmakuFilterHttp { static Future> danmakuFilter() async { var res = await Request().get(Api.danmakuFilter); if (res.data['code'] == 0) { diff --git a/lib/http/dynamics.dart b/lib/http/dynamics.dart index d40b6c851..e428ca022 100644 --- a/lib/http/dynamics.dart +++ b/lib/http/dynamics.dart @@ -123,7 +123,7 @@ class DynamicsHttp { // } // 动态点赞 - static Future thumbDynamic({ + static Future> thumbDynamic({ required String? dynamicId, required int? up, }) async { @@ -144,9 +144,9 @@ class DynamicsHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -277,8 +277,8 @@ class DynamicsHttp { } } - static Future setTop({ - required dynamic dynamicId, + static Future> setTop({ + required Object dynamicId, }) async { var res = await Request().post( Api.setTopDyn, @@ -290,14 +290,14 @@ class DynamicsHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future rmTop({ - required dynamic dynamicId, + static Future> rmTop({ + required Object dynamicId, }) async { var res = await Request().post( Api.rmTopDyn, @@ -309,14 +309,14 @@ class DynamicsHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future articleInfo({ - required dynamic cvId, + static Future> articleInfo({ + required Object cvId, }) async { var res = await Request().get( Api.articleInfo, @@ -328,12 +328,9 @@ class DynamicsHttp { }), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': ArticleInfoData.fromJson(res.data['data']), - }; + return Success(ArticleInfoData.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -415,7 +412,9 @@ class DynamicsHttp { } } - static Future> topicTop({required topicId}) async { + static Future> topicTop({ + required Object topicId, + }) async { final res = await Request().get( Api.topicTop, queryParameters: { @@ -434,7 +433,7 @@ class DynamicsHttp { } static Future> topicFeed({ - required topicId, + required Object topicId, required String offset, required int sortBy, }) async { @@ -461,7 +460,7 @@ class DynamicsHttp { } static Future> articleList({ - required id, + required Object id, }) async { final res = await Request().get( Api.articleList, @@ -477,11 +476,11 @@ class DynamicsHttp { } } - static Future dynReserve({ - required reserveId, - required curBtnStatus, - required dynamicIdStr, - required reserveTotal, + static Future> dynReserve({ + required Object? reserveId, + required Object? curBtnStatus, + required Object dynamicIdStr, + required Object? reserveTotal, }) async { var res = await Request().post( Api.dynReserve, @@ -489,19 +488,16 @@ class DynamicsHttp { 'csrf': Accounts.main.csrf, }, data: { - 'reserve_id': reserveId, - 'cur_btn_status': curBtnStatus, + 'reserve_id': ?reserveId, + 'cur_btn_status': ?curBtnStatus, 'dynamic_id_str': dynamicIdStr, - 'reserve_total': reserveTotal, + 'reserve_total': ?reserveTotal, }, ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': DynReserveData.fromJson(res.data['data']), - }; + return Success(DynReserveData.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } diff --git a/lib/http/fan.dart b/lib/http/fan.dart index 149661e2c..3c91b9c49 100644 --- a/lib/http/fan.dart +++ b/lib/http/fan.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/follow/data.dart'; -class FanHttp { +abstract final class FanHttp { static Future> fans({ int? vmid, int? pn, diff --git a/lib/http/fav.dart b/lib/http/fav.dart index 66ede9dec..6f21fb926 100644 --- a/lib/http/fav.dart +++ b/lib/http/fav.dart @@ -17,8 +17,8 @@ import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_sign.dart'; import 'package:dio/dio.dart'; -class FavHttp { - static Future favFavFolder(mediaId) async { +abstract final class FavHttp { + static Future> favFavFolder(Object mediaId) async { var res = await Request().post( Api.favFavFolder, data: { @@ -28,13 +28,13 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return const {'status': true, 'msg': '收藏成功'}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future unfavFavFolder(mediaId) async { + static Future> unfavFavFolder(Object mediaId) async { var res = await Request().post( Api.unfavFavFolder, data: { @@ -44,9 +44,9 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return const {'status': true, 'msg': '取消收藏成功'}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -79,7 +79,10 @@ class FavHttp { } // 取消订阅 - static Future cancelSub({required int id, required int type}) async { + static Future> cancelSub({ + required int id, + required int type, + }) async { var res = type == 11 ? await Request().post( Api.unfavFolder, @@ -99,9 +102,9 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -145,7 +148,7 @@ class FavHttp { } } - static Future addFavPugv(seasonId) async { + static Future> addFavPugv(Object seasonId) async { var res = await Request().post( Api.addFavPugv, data: { @@ -155,13 +158,13 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delFavPugv(seasonId) async { + static Future> delFavPugv(Object seasonId) async { var res = await Request().post( Api.delFavPugv, data: { @@ -171,9 +174,9 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -195,7 +198,7 @@ class FavHttp { } } - static Future addFavTopic(topicId) async { + static Future> addFavTopic(Object topicId) async { var res = await Request().post( Api.addFavTopic, data: { @@ -205,13 +208,13 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delFavTopic(topicId) async { + static Future> delFavTopic(Object topicId) async { var res = await Request().post( Api.delFavTopic, data: { @@ -221,13 +224,16 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future likeTopic(topicId, bool isLike) async { + static Future> likeTopic( + Object topicId, + bool isLike, + ) async { var res = await Request().post( Api.likeTopic, data: { @@ -240,9 +246,9 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -263,8 +269,8 @@ class FavHttp { } } - static Future addFavArticle({ - required dynamic id, + static Future> addFavArticle({ + required Object id, }) async { var res = await Request().post( Api.addFavArticle, @@ -277,14 +283,14 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delFavArticle({ - required dynamic id, + static Future> delFavArticle({ + required Object id, }) async { var res = await Request().post( Api.delFavArticle, @@ -297,9 +303,9 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -345,7 +351,7 @@ class FavHttp { } } - static Future delNote({ + static Future> delNote({ required bool isPublish, required String noteIds, }) async { @@ -360,9 +366,9 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -409,7 +415,7 @@ class FavHttp { } } - static Future sortFavFolder({ + static Future> sortFavFolder({ required String sort, }) async { Map data = { @@ -425,14 +431,14 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future sortFav({ - required dynamic mediaId, + static Future> sortFav({ + required Object mediaId, required String sort, }) async { Map data = { @@ -449,14 +455,14 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future cleanFav({ - required dynamic mediaId, + static Future> cleanFav({ + required Object mediaId, }) async { var res = await Request().post( Api.cleanFav, @@ -470,13 +476,13 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future deleteFolder({ + static Future> deleteFolder({ required String mediaIds, }) async { var res = await Request().post( @@ -491,13 +497,13 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future addOrEditFolder({ + static Future> addOrEditFolder({ required bool isAdd, dynamic mediaId, required String title, @@ -520,14 +526,14 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': FavFolderInfo.fromJson(res.data['data'])}; + return Success(FavFolderInfo.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future favFolderInfo({ - dynamic mediaId, + static Future> favFolderInfo({ + required Object mediaId, }) async { var res = await Request().get( Api.favFolderInfo, @@ -536,13 +542,13 @@ class FavHttp { }, ); if (res.data['code'] == 0) { - return {'status': true, 'data': FavFolderInfo.fromJson(res.data['data'])}; + return Success(FavFolderInfo.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future seasonFav({ + static Future> seasonFav({ required bool isFav, required dynamic seasonId, }) async { @@ -558,14 +564,9 @@ class FavHttp { ), ); if (res.data['code'] == 0) { - return { - 'status': true, - }; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } @@ -604,9 +605,9 @@ class FavHttp { } } - static Future communityAction({ - required dynamic opusId, - required dynamic action, + static Future> communityAction({ + required Object opusId, + required Object action, }) async { var res = await Request().post( Api.communityAction, @@ -622,14 +623,14 @@ class FavHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // (取消)收藏 - static Future favVideo({ + static Future> favVideo({ required String resources, String? addIds, String? delIds, @@ -645,16 +646,16 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // (取消)收藏 - static Future unfavAll({ - required rid, - required type, + static Future> unfavAll({ + required Object rid, + required Object type, }) async { var res = await Request().post( Api.unfavAll, @@ -666,9 +667,9 @@ class FavHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } diff --git a/lib/http/follow.dart b/lib/http/follow.dart index 46b3e426a..0f402cc6d 100644 --- a/lib/http/follow.dart +++ b/lib/http/follow.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/follow/data.dart'; -class FollowHttp { +abstract final class FollowHttp { static Future> followings({ int? vmid, int? pn, diff --git a/lib/http/init.dart b/lib/http/init.dart index 536931d32..0f8a2e150 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/constants.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/retry_interceptor.dart'; import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/utils/accounts.dart'; @@ -48,8 +49,8 @@ class Request { static Future setCoin() async { final res = await UserHttp.getCoin(); - if (res['status']) { - GlobalData().coins = res['data']; + if (res case Success(:final response)) { + GlobalData().coins = response; } } diff --git a/lib/http/live.dart b/lib/http/live.dart index f727f9b09..52524f6c6 100644 --- a/lib/http/live.dart +++ b/lib/http/live.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/models_new/live/live_area_list/area_item.dart'; import 'package:PiliPlus/models_new/live/live_area_list/area_list.dart'; import 'package:PiliPlus/models_new/live/live_dm_block/data.dart'; import 'package:PiliPlus/models_new/live/live_dm_block/shield_info.dart'; +import 'package:PiliPlus/models_new/live/live_dm_block/shield_user_list.dart'; import 'package:PiliPlus/models_new/live/live_dm_info/data.dart'; import 'package:PiliPlus/models_new/live/live_emote/data.dart'; import 'package:PiliPlus/models_new/live/live_emote/datum.dart'; @@ -29,7 +30,7 @@ import 'package:dio/dio.dart'; abstract final class LiveHttp { static Account get recommend => Accounts.get(AccountType.recommend); - static Future sendLiveMsg({ + static Future> sendLiveMsg({ required Object roomId, required Object msg, Object? dmType, @@ -64,15 +65,9 @@ abstract final class LiveHttp { }), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': res.data['data'], - }; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } @@ -112,12 +107,9 @@ abstract final class LiveHttp { }, ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': RoomInfoH5Data.fromJson(res.data['data']), - }; + return Success(RoomInfoH5Data.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -148,12 +140,9 @@ abstract final class LiveHttp { }), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': LiveDmInfoData.fromJson(res.data['data']), - }; + return Success(LiveDmInfoData.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -382,7 +371,7 @@ abstract final class LiveHttp { } } - static Future setLiveFavTag({ + static Future> setLiveFavTag({ required String ids, }) async { final data = { @@ -410,9 +399,9 @@ abstract final class LiveHttp { ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -508,7 +497,7 @@ abstract final class LiveHttp { } } - static Future liveSetSilent({ + static Future> liveSetSilent({ required String type, required int level, }) async { @@ -524,13 +513,13 @@ abstract final class LiveHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future addShieldKeyword({ + static Future> addShieldKeyword({ required String keyword, }) async { final csrf = Accounts.main.csrf; @@ -544,13 +533,13 @@ abstract final class LiveHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delShieldKeyword({ + static Future> delShieldKeyword({ required String keyword, }) async { final csrf = Accounts.main.csrf; @@ -564,9 +553,9 @@ abstract final class LiveHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -588,13 +577,13 @@ abstract final class LiveHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return Success(ShieldUserList.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future liveLikeReport({ + static Future> liveLikeReport({ required int clickTime, required dynamic roomId, required dynamic uid, @@ -613,9 +602,9 @@ abstract final class LiveHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } diff --git a/lib/http/loading_state.dart b/lib/http/loading_state.dart index 28cca5a4e..2f20bc749 100644 --- a/lib/http/loading_state.dart +++ b/lib/http/loading_state.dart @@ -17,7 +17,7 @@ sealed class LoadingState { _ => null, }; - void toast() => SmartDialog.showToast(toString()); + Future toast() => SmartDialog.showToast(toString()); } class Loading extends LoadingState { diff --git a/lib/http/match.dart b/lib/http/match.dart index 0a5ebc670..075593e8e 100644 --- a/lib/http/match.dart +++ b/lib/http/match.dart @@ -4,8 +4,8 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/match/match_info/contest.dart'; import 'package:PiliPlus/models_new/match/match_info/data.dart'; -class MatchHttp { - static Future> matchInfo(dynamic cid) async { +abstract final class MatchHttp { + static Future> matchInfo(Object cid) async { var res = await Request().get( Api.matchInfo, queryParameters: { diff --git a/lib/http/member.dart b/lib/http/member.dart index c6c26f02b..fd1466e6c 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -30,7 +30,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; -class MemberHttp { +abstract final class MemberHttp { static Future reportMember( dynamic mid, { String? reason, @@ -206,13 +206,13 @@ class MemberHttp { } static Future spaceStory({ - required mid, - required aid, - required beforeSize, - required afterSize, - required cid, - required contain, - required index, + required Object mid, + required Object aid, + required Object beforeSize, + required Object afterSize, + required Object cid, + required Object contain, + required Object index, }) async { final params = { 'aid': aid, @@ -281,8 +281,8 @@ class MemberHttp { } } - static Future memberInfo({ - int? mid, + static Future> memberInfo({ + required int mid, String token = '', }) async { String dmImgStr = Utils.base64EncodeRandomString(16, 64); @@ -309,12 +309,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': MemberInfoModel.fromJson(res.data['data']), - }; + return Success(MemberInfoModel.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -345,7 +342,7 @@ class MemberHttp { } static Future> searchArchive({ - required mid, + required Object mid, int ps = 30, int tid = 0, int? pn, @@ -480,7 +477,7 @@ class MemberHttp { } } - static Future specialAction({ + static Future> specialAction({ int? fid, bool isAdd = true, }) async { @@ -493,17 +490,14 @@ class MemberHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } // 设置分组 - static Future addUsers(String fids, String tagids) async { + static Future> addUsers(String fids, String tagids) async { var res = await Request().post( Api.addUsers, queryParameters: { @@ -519,9 +513,9 @@ class MemberHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'msg': '操作成功'}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -556,7 +550,7 @@ class MemberHttp { } } - static Future createFollowTag(tagName) async { + static Future> createFollowTag(Object tagName) async { var res = await Request().post( Api.createFollowTag, queryParameters: { @@ -570,13 +564,16 @@ class MemberHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future updateFollowTag(tagid, name) async { + static Future> updateFollowTag( + Object tagid, + Object name, + ) async { var res = await Request().post( Api.updateFollowTag, queryParameters: { @@ -591,13 +588,13 @@ class MemberHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delFollowTag(tagid) async { + static Future> delFollowTag(Object tagid) async { var res = await Request().post( Api.delFollowTag, queryParameters: { @@ -611,24 +608,23 @@ class MemberHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 获取up置顶 - static Future getTopVideo(String? vmid) async { + static Future?>> getTopVideo() async { var res = await Request().get(Api.getTopVideoApi); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': res.data['data'] - .map((e) => MemberTagItemModel.fromJson(e)) + return Success( + (res.data['data'] as List?) + ?.map((e) => MemberTagItemModel.fromJson(e)) .toList(), - }; + ); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -702,7 +698,7 @@ class MemberHttp { } static Future> upowerRank({ - required upMid, + required Object upMid, required int page, int? privilegeType, }) async { diff --git a/lib/http/msg.dart b/lib/http/msg.dart index 592887093..921b37048 100644 --- a/lib/http/msg.dart +++ b/lib/http/msg.dart @@ -18,7 +18,7 @@ import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; import 'package:uuid/uuid.dart'; -class MsgHttp { +abstract final class MsgHttp { static Future> msgFeedReplyMe({ int? cursor, int? cursorTime, @@ -134,7 +134,7 @@ class MsgHttp { } } - static Future msgSysUpdateCursor(int cursor) async { + static Future> msgSysUpdateCursor(int cursor) async { String csrf = Accounts.main.csrf; var res = await Request().get( Api.msgSysUpdateCursor, @@ -144,14 +144,9 @@ class MsgHttp { }, ); if (res.data['code'] == 0) { - return { - 'status': true, - }; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } @@ -182,7 +177,7 @@ class MsgHttp { } } - static Future uploadBfs({ + static Future> uploadBfs({ required String path, String? category, String? biz, @@ -199,20 +194,14 @@ class MsgHttp { cancelToken: cancelToken, ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': UploadBfsResData.fromJson(res.data['data']), - }; + return Success(UploadBfsResData.fromJson(res.data['data'])); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } - static Future createTextDynamic( - dynamic content, + static Future> createTextDynamic( + Object content, ) async { String csrf = Accounts.main.csrf; Map data = await WbiSign.makSign({ @@ -229,16 +218,17 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } - static Future removeDynamic({required dynIdStr, dynType, ridStr}) async { + static Future> removeDynamic({ + required Object dynIdStr, + Object? dynType, + Object? ridStr, + }) async { var res = await Request().post( Api.removeDynamic, queryParameters: { @@ -252,14 +242,14 @@ class MsgHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future removeMsg( - dynamic talkerId, + static Future> removeMsg( + Object talkerId, ) async { String csrf = Accounts.main.csrf; Map data = await WbiSign.makSign({ @@ -276,13 +266,13 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future delMsgfeed( + static Future> delMsgfeed( int tp, dynamic id, ) async { @@ -300,17 +290,14 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } - static Future delSysMsg( - dynamic id, + static Future> delSysMsg( + Object id, ) async { String csrf = Accounts.main.csrf; var res = await Request().post( @@ -328,17 +315,14 @@ class MsgHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } - static Future setTop({ - required dynamic talkerId, + static Future> setTop({ + required Object talkerId, required int opType, }) async { String csrf = Accounts.main.csrf; @@ -357,19 +341,16 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data['message'], - }; + return Error(res.data['message']); } } // 消息标记已读 - static Future ackSessionMsg({ - int? talkerId, - int? ackSeqno, + static Future> ackSessionMsg({ + required int talkerId, + required int ackSeqno, }) async { String csrf = Accounts.main.csrf; final params = await WbiSign.makSign({ @@ -383,18 +364,13 @@ class MsgHttp { }); var res = await Request().get(Api.ackSessionMsg, queryParameters: params); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': res.data['data'], - }; + return const Success(null); } else { - return { - 'status': false, - 'msg': - "message: ${res.data['message']}," - " msg: ${res.data['msg']}," - " code: ${res.data['code']}", - }; + return Error( + "message: ${res.data['message']}," + " msg: ${res.data['msg']}," + " code: ${res.data['code']}", + ); } } @@ -454,8 +430,8 @@ class MsgHttp { return const Uuid().v4(); } - static Future msgSetNotice({ - required dynamic id, + static Future> msgSetNotice({ + required Object id, required int noticeState, }) async { final csrf = Accounts.main.csrf; @@ -476,14 +452,14 @@ class MsgHttp { ), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future setMsgDnd({ - required uid, + static Future> setMsgDnd({ + required Object uid, required int setting, required dndUid, }) async { @@ -502,13 +478,13 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future setPushSs({ + static Future> setPushSs({ required int setting, required talkerUid, }) async { @@ -526,9 +502,9 @@ class MsgHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -558,7 +534,7 @@ class MsgHttp { } static Future> getSessionSs({ - required talkerUid, + required Object talkerUid, }) async { final csrf = Accounts.main.csrf; var res = await Request().get( @@ -579,7 +555,7 @@ class MsgHttp { } static Future?>> getMsgDnd({ - required uidsStr, + required Object uidsStr, }) async { final csrf = Accounts.main.csrf; var res = await Request().get( @@ -604,7 +580,7 @@ class MsgHttp { } } - static Future msgUnread() async { + static Future> msgUnread() async { var res = await Request().get( Api.msgUnread, queryParameters: { @@ -615,16 +591,13 @@ class MsgHttp { }, ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': SingleUnreadData.fromJson(res.data['data']), - }; + return Success(SingleUnreadData.fromJson(res.data['data'])); } else { - return {'status': false, 'data': res.data['message']}; + return Error(res.data['message']); } } - static Future msgFeedUnread() async { + static Future> msgFeedUnread() async { var res = await Request().get( Api.msgFeedUnread, queryParameters: { @@ -634,12 +607,9 @@ class MsgHttp { }, ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': MsgFeedUnreadData.fromJson(res.data['data']), - }; + return Success(MsgFeedUnreadData.fromJson(res.data['data'])); } else { - return {'status': false, 'data': res.data['message']}; + return Error(res.data['message']); } } } diff --git a/lib/http/pgc.dart b/lib/http/pgc.dart index 5843d2939..22d436167 100644 --- a/lib/http/pgc.dart +++ b/lib/http/pgc.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/models_new/pgc/pgc_timeline/result.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:dio/dio.dart'; -class PgcHttp { +abstract final class PgcHttp { static Future> pgcIndexResult({ required int page, required Map params, @@ -38,15 +38,15 @@ class PgcHttp { } static Future> pgcIndexCondition({ - seasonType, - type, - indexType, + Object? seasonType, + required Object type, + Object? indexType, }) async { var res = await Request().get( Api.pgcIndexCondition, queryParameters: { 'season_type': ?seasonType, - 'type': ?type, + 'type': type, 'index_type': ?indexType, }, ); @@ -133,9 +133,9 @@ class PgcHttp { } } - static Future pgcReviewLike({ - required mediaId, - required reviewId, + static Future> pgcReviewLike({ + required Object mediaId, + required Object reviewId, }) async { var res = await Request().post( Api.pgcReviewLike, @@ -148,15 +148,15 @@ class PgcHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future pgcReviewDislike({ - required mediaId, - required reviewId, + static Future> pgcReviewDislike({ + required Object mediaId, + required Object reviewId, }) async { var res = await Request().post( Api.pgcReviewDislike, @@ -169,14 +169,14 @@ class PgcHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future pgcReviewPost({ - required mediaId, + static Future> pgcReviewPost({ + required Object mediaId, required int score, required String content, bool shareFeed = false, @@ -193,14 +193,14 @@ class PgcHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future pgcReviewMod({ - required mediaId, + static Future> pgcReviewMod({ + required Object mediaId, required int score, required String content, required reviewId, @@ -217,15 +217,15 @@ class PgcHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future pgcReviewDel({ - required mediaId, - required reviewId, + static Future> pgcReviewDel({ + required Object mediaId, + required Object reviewId, }) async { var res = await Request().post( Api.pgcReviewDel, @@ -237,18 +237,16 @@ class PgcHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future seasonStatus(dynamic seasonId) async { + static Future seasonStatus(Object seasonId) async { var res = await Request().get( Api.seasonStatus, - queryParameters: { - 'season_id': seasonId, - }, + queryParameters: {'season_id': seasonId}, ); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['result']}; diff --git a/lib/http/reply.dart b/lib/http/reply.dart index fba2bd71c..e238cbe7f 100644 --- a/lib/http/reply.dart +++ b/lib/http/reply.dart @@ -16,7 +16,7 @@ class ReplyHttp { extra: {'account': const NoAccount()}, ); - static Future replyList({ + static Future> replyList({ required bool isLogin, required int oid, required String nextOffset, @@ -48,8 +48,7 @@ class ReplyHttp { options: !isLogin ? options : null, ); if (res.data['code'] == 0) { - ReplyData replyData = ReplyData.fromJson(res.data['data']); - return Success(replyData); + return Success(ReplyData.fromJson(res.data['data'])); } else { return Error(res.data['message']); } @@ -87,7 +86,7 @@ class ReplyHttp { } } - static Future hateReply({ + static Future> hateReply({ required int type, required int action, required int oid, @@ -105,14 +104,14 @@ class ReplyHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 评论点赞 - static Future likeReply({ + static Future> likeReply({ required int type, required int oid, required int rpid, @@ -130,9 +129,9 @@ class ReplyHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -153,10 +152,10 @@ class ReplyHttp { } } - static Future replyTop({ - required oid, - required type, - required rpid, + static Future> replyTop({ + required Object oid, + required Object type, + required Object rpid, required bool isUpTop, }) async { var res = await Request().post( @@ -171,9 +170,9 @@ class ReplyHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } } diff --git a/lib/http/search.dart b/lib/http/search.dart index 74ede7c2e..c110fdd90 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -19,7 +19,9 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class SearchHttp { // 获取搜索建议 - static Future searchSuggest({required String term}) async { + static Future> searchSuggest({ + required String term, + }) async { var res = await Request().get( Api.searchSuggest, queryParameters: { @@ -32,14 +34,11 @@ class SearchHttp { Map resultMap = json.decode(res.data); if (resultMap['code'] == 0) { if (resultMap['result'] is Map) { - return { - 'status': true, - 'data': SearchSuggestModel.fromJson(resultMap['result']), - }; + return Success(SearchSuggestModel.fromJson(resultMap['result'])); } } } - return {'status': false, 'msg': '请求错误'}; + return const Error(null); } // 分类搜索 diff --git a/lib/http/user.dart b/lib/http/user.dart index 096f88892..453617df9 100644 --- a/lib/http/user.dart +++ b/lib/http/user.dart @@ -1,4 +1,3 @@ -import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -20,7 +19,6 @@ import 'package:PiliPlus/utils/app_sign.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class UserHttp { static Future userStat({required int mid}) async { @@ -104,7 +102,10 @@ class UserHttp { } // 暂停观看历史 - static Future pauseHistory(bool switchStatus, {Account? account}) async { + static Future> pauseHistory( + bool switchStatus, { + Account? account, + }) async { // 暂停switchStatus传true 否则false account ??= Accounts.history; var res = await Request().post( @@ -119,24 +120,28 @@ class UserHttp { contentType: Headers.formUrlEncodedContentType, ), ); - return res; + if (res.data['code'] == 0) { + return const Success(null); + } else { + return Error(res.data['message']); + } } // 观看历史暂停状态 - static Future historyStatus({Account? account}) async { + static Future> historyStatus({Account? account}) async { var res = await Request().get( Api.historyStatus, options: Options(extra: {'account': account ?? Accounts.history}), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return Success(res.data['data']); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 清空历史记录 - static Future clearHistory({Account? account}) async { + static Future> clearHistory({Account? account}) async { account ??= Accounts.history; var res = await Request().post( Api.clearHistory, @@ -149,11 +154,19 @@ class UserHttp { contentType: Headers.formUrlEncodedContentType, ), ); - return res; + if (res.data['code'] == 0) { + return const Success(null); + } else { + return Error(res.data['message']); + } } // 稍后再看 - static Future toViewLater({String? bvid, dynamic aid}) async { + static Future toViewLater({ + String? bvid, + Object? aid, + }) async { + assert(aid != null || bvid != null); var res = await Request().post( Api.toViewLater, data: { @@ -189,23 +202,23 @@ class UserHttp { } // 获取用户凭证 失效 - static Future thirdLogin() async { - var res = await Request().get( - 'https://passport.bilibili.com/login/app/third', - queryParameters: { - 'appkey': Constants.appKey, - 'api': Constants.thirdApi, - 'sign': Constants.thirdSign, - }, - ); - try { - if (res.data['code'] == 0 && res.data['data']['has_login'] == 1) { - Request().get(res.data['data']['confirm_uri']); - } - } catch (err) { - SmartDialog.showNotify(msg: '获取用户凭证: $err', notifyType: NotifyType.error); - } - } + // static Future thirdLogin() async { + // var res = await Request().get( + // 'https://passport.bilibili.com/login/app/third', + // queryParameters: { + // 'appkey': Constants.appKey, + // 'api': Constants.thirdApi, + // 'sign': Constants.thirdSign, + // }, + // ); + // try { + // if (res.data['code'] == 0 && res.data['data']['has_login'] == 1) { + // Request().get(res.data['data']['confirm_uri']); + // } + // } catch (err) { + // SmartDialog.showNotify(msg: '获取用户凭证: $err', notifyType: NotifyType.error); + // } + // } // 清空稍后再看 // clean_type: null->all, 1->invalid, 2->viewed static Future toViewClear([int? cleanType]) async { @@ -225,7 +238,10 @@ class UserHttp { } // 删除历史记录 - static Future delHistory(String kid, {Account? account}) async { + static Future> delHistory( + String kid, { + Account? account, + }) async { account ??= Accounts.history; var res = await Request().post( Api.delHistory, @@ -240,9 +256,9 @@ class UserHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'msg': '已删除'}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -324,9 +340,9 @@ class UserHttp { } // 稍后再看列表 - static Future getMediaList({ - required dynamic type, - required bizId, + static Future> getMediaList({ + required Object type, + required Object bizId, required int ps, dynamic oid, int? otype, @@ -352,18 +368,18 @@ class UserHttp { }, ); if (res.data['code'] == 0) { - return {'status': true, 'data': MediaListData.fromJson(res.data['data'])}; + return Success(MediaListData.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future getCoin() async { + static Future> getCoin() async { final res = await Request().get(Api.getCoin); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']?['money']}; + return Success(res.data['data']?['money']); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -403,7 +419,7 @@ class UserHttp { } } - static Future spaceSettingMod(data) async { + static Future> spaceSettingMod(Map data) async { final res = await Request().post( Api.spaceSettingMod, queryParameters: { @@ -413,13 +429,13 @@ class UserHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future vipExpAdd() async { + static Future> vipExpAdd() async { final res = await Request().post( Api.vipExpAdd, queryParameters: { @@ -428,9 +444,9 @@ class UserHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } diff --git a/lib/http/video.dart b/lib/http/video.dart index 55bcd8858..9c4c36506 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -37,7 +37,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart' show compute; /// view层根据 status 判断渲染逻辑 -class VideoHttp { +abstract final class VideoHttp { static RegExp zoneRegExp = RegExp(Pref.banWordForZone, caseSensitive: false); static bool enableFilter = zoneRegExp.pattern.isNotEmpty; @@ -327,20 +327,22 @@ class VideoHttp { } // 获取点赞/投币/收藏状态 pgc - static Future pgcLikeCoinFav({dynamic epId}) async { + static Future> pgcLikeCoinFav({ + required Object epId, + }) async { var res = await Request().get( Api.pgcLikeCoinFav, queryParameters: {'ep_id': epId}, ); if (res.data['code'] == 0) { - return {'status': true, 'data': PgcLCF.fromJson(res.data['data'])}; + return Success(PgcLCF.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 投币 - static Future coinVideo({ + static Future> coinVideo({ required String bvid, required int multiply, int selectLike = 0, @@ -357,14 +359,17 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 一键三连 pgc - static Future pgcTriple({dynamic epId, required dynamic seasonId}) async { + static Future> pgcTriple({ + required Object epId, + Object? seasonId, + }) async { var res = await Request().post( Api.pgcTriple, data: { @@ -381,14 +386,16 @@ class VideoHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': PgcTriple.fromJson(res.data['data'])}; + return Success(PgcTriple.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 一键三连 - static Future ugcTriple({required String bvid}) async { + static Future> ugcTriple({ + required String bvid, + }) async { var res = await Request().post( Api.ugcTriple, data: { @@ -411,14 +418,17 @@ class VideoHttp { ), ); if (res.data['code'] == 0) { - return {'status': true, 'data': UgcTriple.fromJson(res.data['data'])}; + return Success(UgcTriple.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // (取消)点赞 - static Future likeVideo({required String bvid, required bool type}) async { + static Future> likeVideo({ + required String bvid, + required bool type, + }) async { var res = await Request().post( Api.likeVideo, data: { @@ -428,16 +438,19 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']}; + return Success(res.data['data']['toast']); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // (取消)点踩 - static Future dislikeVideo({required String bvid, required bool type}) async { + static Future> dislikeVideo({ + required String bvid, + required bool type, + }) async { if (Accounts.main.accessKey.isNullOrEmpty) { - return {'status': false, 'msg': "请退出账号后重新登录"}; + return const Error('请退出账号后重新登录'); } var res = await Request().post( Api.dislikeVideo, @@ -448,24 +461,21 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data is! String && res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return { - 'status': false, - 'msg': res.data is String ? res.data : res.data['message'], - }; + return Error(res.data is String ? res.data : res.data['message']); } } // 推送不感兴趣反馈 - static Future feedDislike({ + static Future> feedDislike({ required String goto, required int id, int? reasonId, int? feedbackId, }) async { if (Accounts.get(AccountType.recommend).accessKey.isNullOrEmpty) { - return {'status': false, 'msg': "请退出账号后重新登录"}; + return const Error('请退出账号后重新登录'); } assert((reasonId != null) ^ (feedbackId != null)); var res = await Request().get( @@ -480,21 +490,21 @@ class VideoHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } // 推送不感兴趣取消 - static Future feedDislikeCancel({ + static Future> feedDislikeCancel({ required String goto, required int id, int? reasonId, int? feedbackId, }) async { if (Accounts.get(AccountType.recommend).accessKey.isNullOrEmpty) { - return {'status': false, 'msg': "请退出账号后重新登录"}; + return const Error('请退出账号后重新登录'); } var res = await Request().get( Api.feedDislikeCancel, @@ -508,9 +518,9 @@ class VideoHttp { }, ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } @@ -559,7 +569,7 @@ class VideoHttp { } } - static Future replyDel({ + static Future> replyDel({ required int type, //replyType required int oid, required int rpid, @@ -575,14 +585,14 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return const Error('请退出账号后重新登录'); } } // 操作用户关系 - static Future relationMod({ + static Future> relationMod({ required int mid, required int act, required int reSrc, @@ -624,16 +634,16 @@ class VideoHttp { // unblock Pref.removeBlackMid(mid); } - return {'status': true}; + return const Success(null); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future roomEntryAction({ - roomId, - }) async { - await Request().post( + static Future roomEntryAction({ + required Object roomId, + }) { + return Request().post( Api.roomEntryAction, queryParameters: { 'csrf': Accounts.heartbeat.csrf, @@ -645,15 +655,15 @@ class VideoHttp { ); } - static Future historyReport({ - aid, - type, - }) async { - await Request().post( + static Future historyReport({ + required Object aid, + required Object type, + }) { + return Request().post( Api.historyReport, data: { - 'aid': ?aid, - 'type': ?type, + 'aid': aid, + 'type': type, 'csrf': Accounts.heartbeat.csrf, }, options: Options(contentType: Headers.formUrlEncodedContentType), @@ -661,18 +671,18 @@ class VideoHttp { } // 视频播放进度 - static Future heartBeat({ - aid, - bvid, - cid, - progress, - epid, - seasonId, - subType, + static Future heartBeat({ + Object? aid, + Object? bvid, + required Object cid, + required Object progress, + Object? epid, + Object? seasonId, + Object? subType, required VideoType videoType, - }) async { + }) { final isPugv = videoType == VideoType.pugv; - await Request().post( + return Request().post( Api.heartBeat, data: { if (isPugv) 'aid': ?aid else 'bvid': ?bvid, @@ -688,12 +698,12 @@ class VideoHttp { ); } - static Future medialistHistory({ + static Future medialistHistory({ required int desc, - required dynamic oid, - required dynamic upperMid, - }) async { - await Request().post( + required Object oid, + required Object upperMid, + }) { + return Request().post( Api.mediaListHistory, data: { 'desc': desc, @@ -706,7 +716,7 @@ class VideoHttp { } // 添加追番 - static Future pgcAdd({int? seasonId}) async { + static Future> pgcAdd({int? seasonId}) async { var res = await Request().post( Api.pgcAdd, data: { @@ -716,24 +726,14 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'msg': res.data['result'] == null - ? 'failed' - : res.data['result']['toast'], - }; + return Success(res.data['result']['toast']); } else { - return { - 'status': false, - 'msg': res.data['result'] == null - ? 'failed' - : res.data['result']['toast'], - }; + return Error(res.data['message']); } } // 取消追番 - static Future pgcDel({int? seasonId}) async { + static Future> pgcDel({int? seasonId}) async { var res = await Request().post( Api.pgcDel, data: { @@ -743,23 +743,13 @@ class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'msg': res.data['result'] == null - ? 'failed' - : res.data['result']['toast'], - }; + return Success(res.data['result']['toast']); } else { - return { - 'status': false, - 'msg': res.data['result'] == null - ? 'failed' - : res.data['result']['toast'], - }; + return Error(res.data['message']); } } - static Future pgcUpdate({ + static Future> pgcUpdate({ required String seasonId, required int status, }) async { @@ -774,16 +764,20 @@ class VideoHttp { contentType: Headers.formUrlEncodedContentType, ), ); - return { - 'status': res.data['code'] == 0, - 'msg': res.data['result'] == null - ? 'failed' - : res.data['result']['toast'], - }; + if (res.data['code'] == 0) { + return Success(res.data['result']['toast']); + } else { + return Error(res.data['message']); + } } // 查看视频同时在看人数 - static Future onlineTotal({int? aid, String? bvid, int? cid}) async { + static Future> onlineTotal({ + int? aid, + String? bvid, + required int cid, + }) async { + assert(aid != null || bvid != null); var res = await Request().get( Api.onlineTotal, queryParameters: { @@ -793,15 +787,15 @@ class VideoHttp { }, ); if (res.data['code'] == 0) { - return {'status': true, 'data': res.data['data']['total']}; + return Success(res.data['data']['total']); } else { - return {'status': false, 'data': null, 'msg': res.data['message']}; + return Error(res.data['message']); } } - static Future aiConclusion({ - String? bvid, - int? cid, + static Future> aiConclusion({ + required String bvid, + required int cid, int? upMid, }) async { final params = await WbiSign.makSign({ @@ -810,24 +804,20 @@ class VideoHttp { 'up_mid': upMid, }); var res = await Request().get(Api.aiConclusion, queryParameters: params); - final code = res.data['code']; - final dataCode = res.data['data']?['code']; - if (code == 0 && dataCode == 0) { - return { - 'status': true, - 'data': AiConclusionData.fromJson(res.data['data']), - }; + final int? code = res.data['code']; + if (code == 0) { + final int? dataCode = res.data['data']?['code']; + if (dataCode == 0) { + return Success(AiConclusionData.fromJson(res.data['data'])); + } else { + return Error(null, code: dataCode); + } } else { - final handling = code == 0 && dataCode == 1; - return { - 'status': false, - 'msg': res.data['message'], - 'handling': handling, - }; + return Error(res.data['message']); } } - static Future playInfo({ + static Future> playInfo({ String? aid, String? bvid, required int cid, @@ -846,12 +836,9 @@ class VideoHttp { }), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': PlayInfoData.fromJson(res.data['data']), - }; + return Success(PlayInfoData.fromJson(res.data['data'])); } else { - return {'status': false, 'msg': res.data['message']}; + return Error(res.data['message']); } } diff --git a/lib/pages/article/controller.dart b/lib/pages/article/controller.dart index b1dc4d3c1..3560a22fe 100644 --- a/lib/pages/article/controller.dart +++ b/lib/pages/article/controller.dart @@ -6,7 +6,6 @@ import 'package:PiliPlus/models/dynamics/article_content_model.dart' show ArticleContentModel; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/models/model_avatar.dart'; -import 'package:PiliPlus/models_new/article/article_info/data.dart'; import 'package:PiliPlus/models_new/article/article_view/data.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; @@ -134,28 +133,27 @@ class ArticleController extends CommonDynController { // stats Future getArticleInfo([bool isGetCover = false]) async { final res = await DynamicsHttp.articleInfo(cvId: commentId); - if (res['status']) { - ArticleInfoData data = res['data']; + if (res case Success(:final response)) { summary - ..cover ??= data.originImageUrls?.firstOrNull - ..title ??= data.title; + ..cover ??= response.originImageUrls?.firstOrNull + ..title ??= response.title; stats.value ??= ModuleStatModel( - comment: DynamicStat(count: data.stats?.reply), - forward: DynamicStat(count: data.stats?.share), + comment: DynamicStat(count: response.stats?.reply), + forward: DynamicStat(count: response.stats?.share), like: DynamicStat( - count: data.stats?.like, - status: data.stats?.like == 1, + count: response.stats?.like, + status: response.stats?.like == 1, ), favorite: DynamicStat( - count: data.stats?.favorite, - status: data.favorite, + count: response.stats?.favorite, + status: response.favorite, ), ); return true; } if (isGetCover) { - SmartDialog.showToast(res['msg']); + res.toast(); } return false; } @@ -185,7 +183,7 @@ class ArticleController extends CommonDynController { ? await FavHttp.delFavArticle(id: commentId) : await FavHttp.addFavArticle(id: commentId) : await FavHttp.communityAction(opusId: id, action: isFav ? 4 : 3); - if (res['status']) { + if (res.isSuccess) { favorite?.status = !isFav; if (isFav) { favorite?.count--; @@ -195,7 +193,7 @@ class ArticleController extends CommonDynController { stats.refresh(); SmartDialog.showToast('${isFav ? '取消' : ''}收藏成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -206,7 +204,7 @@ class ArticleController extends CommonDynController { dynamicId: opusData?.idStr ?? articleData?.dynIdStr, up: isLike ? 2 : 1, ); - if (res['status']) { + if (res.isSuccess) { like?.status = !isLike; if (isLike) { like?.count--; @@ -216,7 +214,7 @@ class ArticleController extends CommonDynController { stats.refresh(); SmartDialog.showToast(!isLike ? '点赞成功' : '取消赞'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/article_list/controller.dart b/lib/pages/article_list/controller.dart index 89e58093f..660d8d515 100644 --- a/lib/pages/article_list/controller.dart +++ b/lib/pages/article_list/controller.dart @@ -9,7 +9,7 @@ import 'package:get/get.dart'; class ArticleListController extends CommonListController { - final id = Get.parameters['id']; + final id = Get.parameters['id']!; @override void onInit() { diff --git a/lib/pages/blacklist/controller.dart b/lib/pages/blacklist/controller.dart index 17e2324d9..15025cef9 100644 --- a/lib/pages/blacklist/controller.dart +++ b/lib/pages/blacklist/controller.dart @@ -38,7 +38,7 @@ class BlackListController title: '确定将 $name 移出黑名单?', onConfirm: () async { var result = await VideoHttp.relationMod(mid: mid, act: 6, reSrc: 11); - if (result['status']) { + if (result.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); diff --git a/lib/pages/common/common_intro_controller.dart b/lib/pages/common/common_intro_controller.dart index 7a3260a30..05fd71713 100644 --- a/lib/pages/common/common_intro_controller.dart +++ b/lib/pages/common/common_intro_controller.dart @@ -107,8 +107,8 @@ abstract class CommonIntroController extends GetxController bvid: bvid, cid: cid.value, ); - if (result['status']) { - total.value = result['data']; + if (result case Success(:final response)) { + total.value = response; } } @@ -128,7 +128,7 @@ abstract class CommonIntroController extends GetxController multiply: coin, selectLike: selectLike ? 1 : 0, ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('投币成功'); coinNum.value += coin; GlobalData().afterCoin(coin); @@ -138,7 +138,7 @@ abstract class CommonIntroController extends GetxController hasLike.value = true; } } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -150,7 +150,7 @@ abstract class CommonIntroController extends GetxController Future viewLater() async { var res = await (hasLater.value ? UserHttp.toViewDel(aids: IdUtils.bv2av(bvid).toString()) - : await UserHttp.toViewLater(bvid: bvid)); + : UserHttp.toViewLater(bvid: bvid)); if (res['status']) hasLater.value = !hasLater.value; SmartDialog.showToast(res['msg']); } @@ -236,12 +236,12 @@ mixin FavMixin on TripleMixin { addIds: favFolderId.toString(), ); SmartDialog.dismiss(); - if (result['status']) { + if (result.isSuccess) { updateFavCount(hasFav ? -1 : 1); this.hasFav.value = !hasFav; SmartDialog.showToast('✅ 快速收藏/取消收藏成功'); } else { - SmartDialog.showToast(result['msg']); + res.toast(); } } else { SmartDialog.dismiss(); @@ -275,7 +275,7 @@ mixin FavMixin on TripleMixin { delIds: delMediaIdsNew.join(','), ); SmartDialog.dismiss(); - if (result['status']) { + if (result.isSuccess) { Get.back(); final newVal = addMediaIdsNew.isNotEmpty || favIds?.length != delMediaIdsNew.length; @@ -285,7 +285,7 @@ mixin FavMixin on TripleMixin { } SmartDialog.showToast('操作成功'); } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } } diff --git a/lib/pages/common/common_whisper_controller.dart b/lib/pages/common/common_whisper_controller.dart index 720c5b96a..2365d7d94 100644 --- a/lib/pages/common/common_whisper_controller.dart +++ b/lib/pages/common/common_whisper_controller.dart @@ -12,15 +12,15 @@ abstract class CommonWhisperController extends CommonListController { SessionPageType get sessionPageType; - Future onRemove(int index, int? talkerId) async { + Future onRemove(int index, int talkerId) async { var res = await MsgHttp.removeMsg(talkerId); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -53,12 +53,12 @@ abstract class CommonWhisperController setting: isMuted ? 0 : 1, dndUid: talkerUid, ); - if (res['status']) { + if (res.isSuccess) { item.isMuted = !isMuted; loadingState.refresh(); SmartDialog.showToast('操作成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/common/publish/common_rich_text_pub_page.dart b/lib/pages/common/publish/common_rich_text_pub_page.dart index 2ab6638fc..76322b2de 100644 --- a/lib/pages/common/publish/common_rich_text_pub_page.dart +++ b/lib/pages/common/publish/common_rich_text_pub_page.dart @@ -10,7 +10,6 @@ import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_mention/item.dart'; import 'package:PiliPlus/models_new/emote/emote.dart' as e; import 'package:PiliPlus/models_new/live/live_emote/emoticon.dart'; -import 'package:PiliPlus/models_new/upload_bfs/data.dart'; import 'package:PiliPlus/pages/common/publish/common_publish_page.dart'; import 'package:PiliPlus/pages/dynamics_mention/view.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -462,14 +461,13 @@ abstract class CommonRichTextPubPageState try { pictures = await Future.wait>( pathList.map((path) async { - Map result = await MsgHttp.uploadBfs( + final result = await MsgHttp.uploadBfs( path: path, category: 'daily', biz: 'new_dyn', cancelToken: cancelToken, ); - if (!result['status']) throw HttpException(result['msg']); - UploadBfsResData data = result['data']; + final data = result.data; return { 'img_width': data.imageWidth, 'img_height': data.imageHeight, diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 1af6bd1e6..a83db767a 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -252,7 +252,7 @@ abstract class ReplyController extends CommonListController { rpid: item.id, isUpTop: isUpTop, ); - if (res['status']) { + if (res.isSuccess) { List list = loadingState.value.data!; item.replyControl.isUpTop = !isUpTop; if (!isUpTop && index != 0) { @@ -263,7 +263,7 @@ abstract class ReplyController extends CommonListController { loadingState.refresh(); SmartDialog.showToast('${isUpTop ? '取消' : ''}置顶成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/dynamics/widgets/additional_panel.dart b/lib/pages/dynamics/widgets/additional_panel.dart index fcb97a0ad..ef5fd2b9f 100644 --- a/lib/pages/dynamics/widgets/additional_panel.dart +++ b/lib/pages/dynamics/widgets/additional_panel.dart @@ -2,22 +2,21 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/dynamics.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; -import 'package:PiliPlus/models_new/dynamic/dyn_reserve/data.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart' hide InkWell; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; Widget addWidget( BuildContext context, { required int floor, required ThemeData theme, - required dynamic idStr, + required Object idStr, required DynamicAddModel additional, }) { final type = additional.type; @@ -185,19 +184,17 @@ Widget addWidget( dynamicIdStr: idStr, reserveTotal: reserve.reserveTotal, ); - if (res['status']) { - DynReserveData data = res['data']; + if (res case Success(:final response)) { reserve - ..desc2?.text = data.descUpdate - ..reserveTotal = data.reserveUpdate - ..button!.status = data.finalBtnStatus; + ..desc2?.text = response.descUpdate + ..reserveTotal = response.reserveUpdate + ..button!.status = + response.finalBtnStatus; if (context.mounted) { (context as Element?)?.markNeedsBuild(); } } else { - SmartDialog.showToast( - res['msg'], - ); + res.toast(); } }, child: Text( diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index 028a3c756..f174b891a 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -30,7 +30,7 @@ class AuthorPanel extends StatelessWidget { final bool isSave; final bool isDetail; final ValueChanged? onRemove; - final Function(bool isTop, dynamic dynId)? onSetTop; + final void Function(bool isTop, Object dynId)? onSetTop; final VoidCallback? onBlock; const AuthorPanel({ diff --git a/lib/pages/dynamics/widgets/dynamic_panel.dart b/lib/pages/dynamics/widgets/dynamic_panel.dart index 7f4b600dc..f01417939 100644 --- a/lib/pages/dynamics/widgets/dynamic_panel.dart +++ b/lib/pages/dynamics/widgets/dynamic_panel.dart @@ -14,7 +14,7 @@ class DynamicPanel extends StatelessWidget { final bool isDetail; final ValueChanged? onRemove; final bool isSave; - final Function(bool isTop, dynamic dynId)? onSetTop; + final void Function(bool isTop, Object dynId)? onSetTop; final VoidCallback? onBlock; final VoidCallback? onUnfold; final bool isDetailPortraitW; diff --git a/lib/pages/dynamics_create_vote/controller.dart b/lib/pages/dynamics_create_vote/controller.dart index 52f327575..6015ceeb9 100644 --- a/lib/pages/dynamics_create_vote/controller.dart +++ b/lib/pages/dynamics_create_vote/controller.dart @@ -2,10 +2,8 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models/dynamics/vote_model.dart'; -import 'package:PiliPlus/models_new/upload_bfs/data.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; class CreateVoteController extends GetxController { @@ -97,9 +95,9 @@ class CreateVoteController extends GetxController { votePublisher: Accounts.main.mid, voteId: voteId, ); - var res = voteId == null - ? await DynamicsHttp.createVote(voteInfo) - : await DynamicsHttp.updateVote(voteInfo); + var res = await (voteId == null + ? DynamicsHttp.createVote(voteInfo) + : DynamicsHttp.updateVote(voteInfo)); if (res.isSuccess) { voteInfo.voteId = res.data; Get.back(result: voteInfo); @@ -114,14 +112,13 @@ class CreateVoteController extends GetxController { category: 'daily', biz: 'vote', ); - if (res['status']) { - UploadBfsResData data = res['data']; + if (res.isSuccess) { options - ..[index].imgUrl = data.imageUrl + ..[index].imgUrl = res.data.imageUrl ..refresh(); updateCanCreate(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/dynamics_tab/controller.dart b/lib/pages/dynamics_tab/controller.dart index 2842f09fc..f67dd921b 100644 --- a/lib/pages/dynamics_tab/controller.dart +++ b/lib/pages/dynamics_tab/controller.dart @@ -53,13 +53,13 @@ class DynamicsTabController Future onRemove(int index, dynamic dynamicId) async { var res = await MsgHttp.removeDynamic(dynIdStr: dynamicId); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/dynamics_topic/controller.dart b/lib/pages/dynamics_topic/controller.dart index 821ced4c3..d1439a958 100644 --- a/lib/pages/dynamics_topic/controller.dart +++ b/lib/pages/dynamics_topic/controller.dart @@ -100,7 +100,7 @@ class DynTopicController var res = isFav ? await FavHttp.delFavTopic(topicId) : await FavHttp.addFavTopic(topicId); - if (res['status']) { + if (res.isSuccess) { if (isFav) { topState.value.data!.topicItem!.fav -= 1; } else { @@ -108,7 +108,7 @@ class DynTopicController } this.isFav.value = !isFav; } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -119,7 +119,7 @@ class DynTopicController } bool isLike = this.isLike.value ?? false; var res = await FavHttp.likeTopic(topicId, isLike); - if (res['status']) { + if (res.isSuccess) { if (isLike) { topState.value.data!.topicItem!.like -= 1; } else { @@ -127,7 +127,7 @@ class DynTopicController } this.isLike.value = !isLike; } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 08e3c6210..d3bb2b82c 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -584,11 +584,11 @@ class _EpisodePanelState extends State isFav: response, seasonId: widget.seasonId, ); - if (result['status']) { + if (result.isSuccess) { SmartDialog.showToast('${response ? '取消' : ''}订阅成功'); _favState!.value = Success(!response); } else { - SmartDialog.showToast(result['msg']); + result.toast(); } }, ), diff --git a/lib/pages/fan/controller.dart b/lib/pages/fan/controller.dart index 41ce87d80..23757ebee 100644 --- a/lib/pages/fan/controller.dart +++ b/lib/pages/fan/controller.dart @@ -42,13 +42,13 @@ class FansController extends FollowTypeController { act: 7, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('移除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/fav/article/controller.dart b/lib/pages/fav/article/controller.dart index 0c9d253a9..50db99eb2 100644 --- a/lib/pages/fav/article/controller.dart +++ b/lib/pages/fav/article/controller.dart @@ -25,15 +25,15 @@ class FavArticleController Future> customGetData() => FavHttp.favArticle(page: page); - Future onRemove(int index, String? id) async { + Future onRemove(int index, String id) async { final res = await FavHttp.communityAction(opusId: id, action: 4); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('已取消收藏'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/fav/article/view.dart b/lib/pages/fav/article/view.dart index d05288935..993cbebac 100644 --- a/lib/pages/fav/article/view.dart +++ b/lib/pages/fav/article/view.dart @@ -66,7 +66,7 @@ class _FavArticlePageState extends State context: context, title: '确定取消收藏?', onConfirm: () => - _favArticleController.onRemove(index, item.opusId), + _favArticleController.onRemove(index, item.opusId!), ), ); }, diff --git a/lib/pages/fav/cheese/controller.dart b/lib/pages/fav/cheese/controller.dart index 87c2e4f07..f3aa23552 100644 --- a/lib/pages/fav/cheese/controller.dart +++ b/lib/pages/fav/cheese/controller.dart @@ -26,15 +26,15 @@ class FavCheeseController Future> customGetData() => FavHttp.favPugv(mid: mid, page: page); - Future onRemove(int index, int? sid) async { + Future onRemove(int index, int sid) async { var res = await FavHttp.delFavPugv(sid); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('已取消收藏'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/fav/cheese/view.dart b/lib/pages/fav/cheese/view.dart index d93a71ecb..d984ebf8d 100644 --- a/lib/pages/fav/cheese/view.dart +++ b/lib/pages/fav/cheese/view.dart @@ -68,7 +68,7 @@ class _FavCheesePageState extends State context: context, title: '确定取消收藏该课堂?', onConfirm: () => - _controller.onRemove(index, item.seasonId), + _controller.onRemove(index, item.seasonId!), ), ); }, diff --git a/lib/pages/fav/note/controller.dart b/lib/pages/fav/note/controller.dart index 114b82f34..8ecd0a584 100644 --- a/lib/pages/fav/note/controller.dart +++ b/lib/pages/fav/note/controller.dart @@ -42,11 +42,11 @@ class FavNoteController .map((item) => isPublish ? item.cvid : item.noteId) .join(','), ); - if (res['status']) { + if (res.isSuccess) { afterDelete(removeList); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/fav/pgc/controller.dart b/lib/pages/fav/pgc/controller.dart index 59bf9f5d2..10c3a5da9 100644 --- a/lib/pages/fav/pgc/controller.dart +++ b/lib/pages/fav/pgc/controller.dart @@ -53,12 +53,14 @@ class FavPgcController // 取消追番 Future pgcDel(int index, seasonId) async { var result = await VideoHttp.pgcDel(seasonId: seasonId); - if (result['status']) { + if (result case Success(:final response)) { loadingState ..value.data!.removeAt(index) ..refresh(); + SmartDialog.showToast(response); + } else { + result.toast(); } - SmartDialog.showToast(result['msg']); } @override @@ -72,7 +74,7 @@ class FavPgcController seasonId: removeList.map((item) => item.seasonId).join(','), status: followStatus, ); - if (res['status']) { + if (res case Success(:final response)) { try { final ctr = Get.find(tag: '$type$followStatus'); if (ctr.loadingState.value.isSuccess) { @@ -88,8 +90,10 @@ class FavPgcController if (kDebugMode) debugPrint('fav pgc onUpdate: $e'); } afterDelete(removeList); + SmartDialog.showToast(response); + } else { + res.toast(); } - SmartDialog.showToast(res['msg']); } Future onUpdate(int index, int followStatus, int? seasonId) async { @@ -97,7 +101,7 @@ class FavPgcController seasonId: seasonId.toString(), status: followStatus, ); - if (result['status']) { + if (result case Success(:final response)) { List list = loadingState.value.data!; final item = list.removeAt(index); loadingState.refresh(); @@ -112,7 +116,9 @@ class FavPgcController } catch (e) { if (kDebugMode) debugPrint('fav pgc pgcUpdate: $e'); } + SmartDialog.showToast(response); + } else { + result.toast(); } - SmartDialog.showToast(result['msg']); } } diff --git a/lib/pages/fav/topic/controller.dart b/lib/pages/fav/topic/controller.dart index b864eb92e..fb83f99a3 100644 --- a/lib/pages/fav/topic/controller.dart +++ b/lib/pages/fav/topic/controller.dart @@ -38,15 +38,15 @@ class FavTopicController Future> customGetData() => FavHttp.favTopic(page: page); - Future onRemove(int index, int? id) async { + Future onRemove(int index, int id) async { var res = await FavHttp.delFavTopic(id); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('已取消收藏'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/fav/topic/view.dart b/lib/pages/fav/topic/view.dart index 7d0264177..d67ce0a0d 100644 --- a/lib/pages/fav/topic/view.dart +++ b/lib/pages/fav/topic/view.dart @@ -84,7 +84,7 @@ class _FavTopicPageState extends State void onLongPress() => showConfirmDialog( context: context, title: '确定取消收藏?', - onConfirm: () => _controller.onRemove(index, item.id), + onConfirm: () => _controller.onRemove(index, item.id!), ); return Material( diff --git a/lib/pages/fav_create/view.dart b/lib/pages/fav_create/view.dart index 0a9332a44..35a31064b 100644 --- a/lib/pages/fav_create/view.dart +++ b/lib/pages/fav_create/view.dart @@ -2,8 +2,8 @@ import 'dart:io' show File; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/fav.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; -import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/fav_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -46,15 +46,14 @@ class _CreateFavPageState extends State { void _getFolderInfo() { _errMsg = null; FavHttp.favFolderInfo(mediaId: _mediaId).then((res) { - if (res['status']) { - FavFolderInfo data = res['data']; - _titleController.text = data.title; - _introController.text = data.intro ?? ''; - _isPublic = FavUtils.isPublicFav(data.attr); - _cover = data.cover; - _attr = data.attr; + if (res case Success(:final response)) { + _titleController.text = response.title; + _introController.text = response.intro ?? ''; + _isPublic = FavUtils.isPublicFav(response.attr); + _cover = response.cover; + _attr = response.attr; } else { - _errMsg = res['msg']; + _errMsg = res.toString(); } setState(() {}); }); @@ -88,11 +87,11 @@ class _CreateFavPageState extends State { cover: _cover ?? '', intro: _introController.text, ).then((res) { - if (res['status']) { - Get.back(result: res['data']); + if (res case Success(:final response)) { + Get.back(result: response); SmartDialog.showToast('${_mediaId != null ? '编辑' : '创建'}成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }); }, diff --git a/lib/pages/fav_detail/controller.dart b/lib/pages/fav_detail/controller.dart index bba1b4f05..dc2bd3041 100644 --- a/lib/pages/fav_detail/controller.dart +++ b/lib/pages/fav_detail/controller.dart @@ -36,14 +36,14 @@ mixin BaseFavController resources: '$id:$type', delIds: mediaId.toString(), ); - if (result['status']) { + if (result.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); updateCount?.call(1); SmartDialog.showToast('取消收藏'); } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -61,12 +61,12 @@ mixin BaseFavController .join(','), delIds: mediaId.toString(), ); - if (result['status']) { + if (result.isSuccess) { updateCount?.call(removeList.length); afterDelete(removeList); SmartDialog.showToast('取消收藏'); } else { - SmartDialog.showToast(result['msg']); + result.toast(); } }, ); @@ -181,21 +181,21 @@ class FavDetailController ? await FavHttp.unfavFavFolder(mediaId) : await FavHttp.favFavFolder(mediaId); - if (res['status']) { + if (res.isSuccess) { folderInfo ..value.favState = isFav ? 0 : 1 ..refresh(); } - SmartDialog.showToast(res['msg']); + res.toast(); } Future cleanFav() async { var res = await FavHttp.cleanFav(mediaId: mediaId); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('清除成功'); Future.delayed(const Duration(milliseconds: 200), onReload); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index b5297f449..eceaa7f0f 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -278,11 +278,11 @@ class _FavDetailPageState extends State with GridMixin { title: '确定删除该收藏夹?', onConfirm: () => FavHttp.deleteFolder(mediaIds: mediaId).then((res) { - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('删除成功'); Get.back(result: true); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }), ), diff --git a/lib/pages/fav_folder_sort/view.dart b/lib/pages/fav_folder_sort/view.dart index 003d0327c..2772ec549 100644 --- a/lib/pages/fav_folder_sort/view.dart +++ b/lib/pages/fav_folder_sort/view.dart @@ -36,12 +36,12 @@ class _FavFolderSortPageState extends State { var res = await FavHttp.sortFavFolder( sort: sortList.map((item) => item.id).join(','), ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('排序完成'); _favController.loadingState.value = Success(sortList); Get.back(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }, child: const Text('完成'), diff --git a/lib/pages/fav_sort/view.dart b/lib/pages/fav_sort/view.dart index 4fef53e51..8949d7d08 100644 --- a/lib/pages/fav_sort/view.dart +++ b/lib/pages/fav_sort/view.dart @@ -61,12 +61,12 @@ class _FavSortPageState extends State { mediaId: _favDetailController.mediaId, sort: sort.join(','), ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('排序完成'); _favDetailController.loadingState.value = Success(sortList); Get.back(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }, child: const Text('完成'), diff --git a/lib/pages/follow/controller.dart b/lib/pages/follow/controller.dart index e8e3d25f3..4a2a18505 100644 --- a/lib/pages/follow/controller.dart +++ b/lib/pages/follow/controller.dart @@ -69,34 +69,34 @@ class FollowController extends GetxController with GetTickerProviderStateMixin { Future onCreateTag(String tagName) async { final res = await MemberHttp.createFollowTag(tagName); - if (res['status']) { + if (res.isSuccess) { followState.value = LoadingState.loading(); queryFollowUpTags(); SmartDialog.showToast('创建成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } Future onUpdateTag(MemberTagItemModel item, String tagName) async { - final res = await MemberHttp.updateFollowTag(item.tagid, tagName); - if (res['status']) { + final res = await MemberHttp.updateFollowTag(item.tagid!, tagName); + if (res.isSuccess) { item.name = tagName; tabs.refresh(); SmartDialog.showToast('修改成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } - Future onDelTag(int? tagid) async { + Future onDelTag(int tagid) async { final res = await MemberHttp.delFollowTag(tagid); - if (res['status']) { + if (res.isSuccess) { followState.value = LoadingState.loading(); queryFollowUpTags(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index 5e33fca98..b6f9300ee 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -220,7 +220,7 @@ class _FollowPageState extends State { context: context, title: '删除分组', content: '删除后,该分组下的用户依旧保留?', - onConfirm: () => _followController.onDelTag(item.tagid), + onConfirm: () => _followController.onDelTag(item.tagid!), ); }, dense: true, diff --git a/lib/pages/group_panel/view.dart b/lib/pages/group_panel/view.dart index 6d9e6bbeb..a21fdccd8 100644 --- a/lib/pages/group_panel/view.dart +++ b/lib/pages/group_panel/view.dart @@ -57,9 +57,11 @@ class _GroupPanelState extends State { widget.mid.toString(), tags.isEmpty ? '0' : tags.join(','), ); - SmartDialog.showToast(res['msg']); - if (res['status']) { + if (res.isSuccess) { + SmartDialog.showToast('操作成功'); Get.back(result: tags); + } else { + res.toast(); } } diff --git a/lib/pages/history/base_controller.dart b/lib/pages/history/base_controller.dart index f4188172c..02ca8de4d 100644 --- a/lib/pages/history/base_controller.dart +++ b/lib/pages/history/base_controller.dart @@ -36,9 +36,11 @@ class HistoryBaseController extends GetxController { SmartDialog.showLoading(msg: '请求中'); var res = await UserHttp.clearHistory(account: account); SmartDialog.dismiss(); - if (res.data['code'] == 0) { + if (res.isSuccess) { SmartDialog.showToast('清空观看历史'); onSuccess(); + } else { + res.toast(); } }, child: const Text('确认清空'), @@ -74,13 +76,15 @@ class HistoryBaseController extends GetxController { account: account, ); SmartDialog.dismiss(); - if (res.data['code'] == 0) { + if (res.isSuccess) { SmartDialog.showToast(pauseStatus ? '暂停观看历史' : '恢复观看历史'); this.pauseStatus.value = pauseStatus; GStorage.localCache.put( LocalCacheKey.historyPause, pauseStatus, ); + } else { + res.toast(); } Get.back(); }, diff --git a/lib/pages/history/controller.dart b/lib/pages/history/controller.dart index 776b5788f..cc24e9254 100644 --- a/lib/pages/history/controller.dart +++ b/lib/pages/history/controller.dart @@ -78,11 +78,11 @@ class HistoryController // 观看历史暂停状态 Future historyStatus() async { var res = await UserHttp.historyStatus(account: account); - if (res['status']) { - baseCtr.pauseStatus.value = res['data']; - GStorage.localCache.put(LocalCacheKey.historyPause, res['data']); + if (res case Success(:final response)) { + baseCtr.pauseStatus.value = response; + GStorage.localCache.put(LocalCacheKey.historyPause, response); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -111,11 +111,13 @@ class HistoryController .join(','), account: account, ); - if (response['status']) { - afterDelete(removeList); - } SmartDialog.dismiss(); - SmartDialog.showToast(response['msg']); + if (response.isSuccess) { + afterDelete(removeList); + SmartDialog.showToast('已删除'); + } else { + response.toast(); + } } // 删除选中的记录 diff --git a/lib/pages/history_search/controller.dart b/lib/pages/history_search/controller.dart index 7f296d88e..8a3590dad 100644 --- a/lib/pages/history_search/controller.dart +++ b/lib/pages/history_search/controller.dart @@ -31,12 +31,14 @@ class HistorySearchController '${business}_$kid', account: account, ); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); + SmartDialog.showToast('已删除'); + } else { + res.toast(); } - SmartDialog.showToast(res['msg']); } @override @@ -54,11 +56,13 @@ class HistorySearchController .join(','), account: account, ); - if (response['status']) { + if (response.isSuccess) { afterDelete(removeList); + SmartDialog.showToast('已删除'); + } else { + response.toast(); } SmartDialog.dismiss(); - SmartDialog.showToast(response['msg']); }, ); } diff --git a/lib/pages/live_area/controller.dart b/lib/pages/live_area/controller.dart index bc8596704..54ec38dd5 100644 --- a/lib/pages/live_area/controller.dart +++ b/lib/pages/live_area/controller.dart @@ -47,11 +47,11 @@ class LiveAreaController final res = await LiveHttp.setLiveFavTag( ids: favState.value.data.map((e) => e.id).join(','), ); - if (res['status']) { + if (res.isSuccess) { isEditing.value = !isEditing.value; SmartDialog.showToast('设置成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } else { isEditing.value = !isEditing.value; diff --git a/lib/pages/live_dm_block/controller.dart b/lib/pages/live_dm_block/controller.dart index 0d47a0ce2..b73f36867 100644 --- a/lib/pages/live_dm_block/controller.dart +++ b/lib/pages/live_dm_block/controller.dart @@ -1,10 +1,8 @@ import 'package:PiliPlus/http/live.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/live_dm_silent_type.dart'; -import 'package:PiliPlus/models_new/live/live_dm_block/shield_info.dart'; -import 'package:PiliPlus/models_new/live/live_dm_block/shield_rules.dart'; import 'package:PiliPlus/models_new/live/live_dm_block/shield_user_list.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; class LiveDmBlockController extends GetxController @@ -38,8 +36,8 @@ class LiveDmBlockController extends GetxController Future queryData() async { var res = await LiveHttp.getLiveInfoByUser(roomId); if (res.isSuccess) { - ShieldInfo? data = res.data; - ShieldRules? shieldRules = data?.shieldRules; + final data = res.data; + final shieldRules = data?.shieldRules; level.value = shieldRules?.level ?? 0; rank.value = shieldRules?.rank ?? 0; verify.value = shieldRules?.verify ?? 0; @@ -62,7 +60,7 @@ class LiveDmBlockController extends GetxController VoidCallback? onError, }) async { var res = await LiveHttp.liveSetSilent(type: type.name, level: level); - if (res['status']) { + if (res.isSuccess) { switch (type) { case LiveDmSilentType.level: this.level.value = level; @@ -75,7 +73,7 @@ class LiveDmBlockController extends GetxController return true; } else { onError?.call(); - SmartDialog.showToast(res['msg']); + res.toast(); return false; } } @@ -107,10 +105,10 @@ class LiveDmBlockController extends GetxController Future addShieldKeyword(bool isKeyword, String value) async { if (isKeyword) { var res = await LiveHttp.addShieldKeyword(keyword: value); - if (res['status']) { + if (res.isSuccess) { keywordList.insert(0, value); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } else { var res = await LiveHttp.liveShieldUser( @@ -118,38 +116,33 @@ class LiveDmBlockController extends GetxController roomid: roomId, type: 1, ); - if (res['status']) { - shieldUserList.insert( - 0, - ShieldUserList( - uid: res['data']['uid'], - uname: res['data']['uname'], - ), - ); + if (res case Success(:final response)) { + shieldUserList.insert(0, response); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } - Future onRemove(int index, dynamic item) async { + Future onRemove(int index, Object item) async { + assert(item is ShieldUserList || item is String); if (item is ShieldUserList) { var res = await LiveHttp.liveShieldUser( uid: item.uid, roomid: roomId, type: 0, ); - if (res['status']) { + if (res.isSuccess) { shieldUserList.removeAt(index); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } else { - var res = await LiveHttp.delShieldKeyword(keyword: item); - if (res['status']) { + var res = await LiveHttp.delShieldKeyword(keyword: item as String); + if (res.isSuccess) { keywordList.removeAt(index); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index c1df7807c..48f3f87bc 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -230,16 +230,14 @@ class LiveRoomController extends GetxController { Future queryLiveInfoH5() async { var res = await LiveHttp.liveRoomInfoH5(roomId: roomId); - if (res['status']) { - RoomInfoH5Data data = res['data']; + if (res.isSuccess) { + final data = res.data; roomInfoH5.value = data; title.value = data.roomInfo?.title ?? ''; watchedShow.value = data.watchedShow?.textLarge; videoPlayerServiceHandler?.onVideoDetailChange(data, roomId, heroTag); } else { - if (res['msg'] != null) { - _showDialog(res['msg']); - } + res.toast(); } } @@ -328,9 +326,8 @@ class LiveRoomController extends GetxController { return; } LiveHttp.liveRoomGetDanmakuToken(roomId: roomId).then((res) { - if (res['status']) { - dmInfo = res['data']; - initDm(dmInfo!); + if (res.isSuccess) { + initDm(dmInfo = res.data); } }); } @@ -508,10 +505,10 @@ class LiveRoomController extends GetxController { uid: mid, anchorId: roomInfoH5.value?.roomInfo?.uid, ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('点赞成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } likeClickTime.value = 0; } diff --git a/lib/pages/live_room/send_danmaku/view.dart b/lib/pages/live_room/send_danmaku/view.dart index 3904bb7b3..3c373fd60 100644 --- a/lib/pages/live_room/send_danmaku/view.dart +++ b/lib/pages/live_room/send_danmaku/view.dart @@ -168,7 +168,7 @@ class _ReplyPageState extends CommonRichTextPubPageState { dmType: dmType, emoticonOptions: emoticonOptions, ); - if (res['status']) { + if (res.isSuccess) { hasPub = true; Get.back(); liveRoomController @@ -176,7 +176,7 @@ class _ReplyPageState extends CommonRichTextPubPageState { ..savedDanmaku = null; SmartDialog.showToast('发送成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 5c5ea061d..e857dafa1 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -32,6 +32,12 @@ class _LoginPageState extends State { bool showPassword = false; GlobalKey globalKey = GlobalKey(); + @override + void didChangeDependencies() { + super.didChangeDependencies(); + _loginPageCtr.didChangeDependencies(context); + } + Widget loginByQRCode(ThemeData theme) { return Column( children: [ diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 0e5873b47..7c461c182 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -3,12 +3,11 @@ import 'dart:math' show max; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/dyn.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; -import 'package:PiliPlus/models_new/msgfeed_unread/data.dart'; -import 'package:PiliPlus/models_new/single_unread/data.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/mine/view.dart'; @@ -112,14 +111,13 @@ class MainController extends GetxController Future _msgUnread() async { if (msgUnReadTypes.contains(MsgUnReadType.pm)) { var res = await MsgHttp.msgUnread(); - if (res['status']) { - SingleUnreadData data = res['data']; - return data.followUnread + - data.unfollowUnread + - data.bizMsgFollowUnread + - data.bizMsgUnfollowUnread + - data.unfollowPushMsg + - data.customUnread; + if (res case Success(:final response)) { + return response.followUnread + + response.unfollowUnread + + response.bizMsgFollowUnread + + response.bizMsgUnfollowUnread + + response.unfollowPushMsg + + response.customUnread; } } return 0; @@ -131,23 +129,22 @@ class MainController extends GetxController ..remove(MsgUnReadType.pm); if (remainTypes.isNotEmpty) { var res = await MsgHttp.msgFeedUnread(); - if (res['status']) { - MsgFeedUnreadData data = res['data']; + if (res case Success(:final response)) { for (var item in remainTypes) { switch (item) { case MsgUnReadType.pm: break; case MsgUnReadType.reply: - count += data.reply; + count += response.reply; break; case MsgUnReadType.at: - count += data.at; + count += response.at; break; case MsgUnReadType.like: - count += data.like; + count += response.like; break; case MsgUnReadType.sysMsg: - count += data.sysMsg; + count += response.sysMsg; break; } } diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index 2905f3d0a..f2ad29f8d 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -184,7 +184,7 @@ class MemberController extends CommonDataController act: isBlocked ? 6 : 5, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { relation.value = isBlocked ? 0 : 128; } } @@ -216,14 +216,14 @@ class MemberController extends CommonDataController Future onRemoveFan() async { final res = await VideoHttp.relationMod(mid: mid, act: 7, reSrc: 11); - if (res['status']) { + if (res.isSuccess) { isFollowed = null; if (relation.value == 4) { relation.value = 2; } SmartDialog.showToast('移除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -240,10 +240,10 @@ class MemberController extends CommonDataController Future vipExpAdd() async { var res = await UserHttp.vipExpAdd(); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('领取成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/member_dynamics/controller.dart b/lib/pages/member_dynamics/controller.dart index 84da80837..21bef6320 100644 --- a/lib/pages/member_dynamics/controller.dart +++ b/lib/pages/member_dynamics/controller.dart @@ -50,21 +50,21 @@ class MemberDynamicsController Future onRemove(dynamic dynamicId) async { var res = await MsgHttp.removeDynamic(dynIdStr: dynamicId); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeWhere((item) => item.idStr == dynamicId) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } - Future onSetTop(bool isTop, dynamic dynamicId) async { - var res = isTop - ? await DynamicsHttp.rmTop(dynamicId: dynamicId) - : await DynamicsHttp.setTop(dynamicId: dynamicId); - if (res['status']) { + Future onSetTop(bool isTop, Object dynamicId) async { + var res = await (isTop + ? DynamicsHttp.rmTop(dynamicId: dynamicId) + : DynamicsHttp.setTop(dynamicId: dynamicId)); + if (res.isSuccess) { List list = loadingState.value.data!; list[0].modules.moduleTag = null; if (isTop) { @@ -80,7 +80,7 @@ class MemberDynamicsController SmartDialog.showToast('置顶成功'); } } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/member_search/controller.dart b/lib/pages/member_search/controller.dart index 48c90de8c..edaece801 100644 --- a/lib/pages/member_search/controller.dart +++ b/lib/pages/member_search/controller.dart @@ -11,7 +11,7 @@ class MemberSearchController extends GetxController final editingController = TextEditingController(); final focusNode = FocusNode(); - final mid = Get.parameters['mid']; + final mid = Get.parameters['mid']!; final uname = Get.parameters['uname']; final RxBool hasData = false.obs; diff --git a/lib/pages/msg_feed_top/at_me/controller.dart b/lib/pages/msg_feed_top/at_me/controller.dart index b417b3630..7be5f8f70 100644 --- a/lib/pages/msg_feed_top/at_me/controller.dart +++ b/lib/pages/msg_feed_top/at_me/controller.dart @@ -36,16 +36,17 @@ class AtMeController extends CommonListController { Future> customGetData() => MsgHttp.msgFeedAtMe(cursor: cursor, cursorTime: cursorTime); - Future onRemove(dynamic id, int index) async { + @pragma('vm:notify-debugger-on-exception') + Future onRemove(Object id, int index) async { try { var res = await MsgHttp.delMsgfeed(2, id); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } catch (_) {} } diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index e19f7f095..d8374f48a 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -96,7 +96,7 @@ class _AtMePageState extends State { void onLongPress() => showConfirmDialog( context: context, title: '确定删除该通知?', - onConfirm: () => _atMeController.onRemove(item.id, index), + onConfirm: () => _atMeController.onRemove(item.id!, index), ); return ListTile( safeArea: true, diff --git a/lib/pages/msg_feed_top/like_me/controller.dart b/lib/pages/msg_feed_top/like_me/controller.dart index 6c428dfeb..d571e4d82 100644 --- a/lib/pages/msg_feed_top/like_me/controller.dart +++ b/lib/pages/msg_feed_top/like_me/controller.dart @@ -66,7 +66,7 @@ class LikeMeController Future onRemove(dynamic id, int index, bool isLatest) async { try { var res = await MsgHttp.delMsgfeed(0, id); - if (res['status']) { + if (res.isSuccess) { Pair, List> pair = loadingState.value.data; if (isLatest) { @@ -77,20 +77,23 @@ class LikeMeController loadingState.refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } catch (_) {} } Future onSetNotice(MsgLikeItem item, bool isNotice) async { int noticeState = isNotice ? 1 : 0; - var res = await MsgHttp.msgSetNotice(id: item.id, noticeState: noticeState); - if (res['status']) { + var res = await MsgHttp.msgSetNotice( + id: item.id!, + noticeState: noticeState, + ); + if (res.isSuccess) { item.noticeState = noticeState; loadingState.refresh(); SmartDialog.showToast('操作成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/msg_feed_top/reply_me/controller.dart b/lib/pages/msg_feed_top/reply_me/controller.dart index 1b452e633..b84fcd6ae 100644 --- a/lib/pages/msg_feed_top/reply_me/controller.dart +++ b/lib/pages/msg_feed_top/reply_me/controller.dart @@ -40,13 +40,13 @@ class ReplyMeController Future onRemove(dynamic id, int index) async { try { var res = await MsgHttp.delMsgfeed(1, id); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } catch (_) {} } diff --git a/lib/pages/msg_feed_top/sys_msg/controller.dart b/lib/pages/msg_feed_top/sys_msg/controller.dart index 1d50e5983..8c7cfcd97 100644 --- a/lib/pages/msg_feed_top/sys_msg/controller.dart +++ b/lib/pages/msg_feed_top/sys_msg/controller.dart @@ -37,13 +37,13 @@ class SysMsgController Future onRemove(dynamic id, int index) async { try { var res = await MsgHttp.delSysMsg(id); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } catch (_) {} } diff --git a/lib/pages/pgc_review/child/controller.dart b/lib/pages/pgc_review/child/controller.dart index 32a3c25f6..95c7279fb 100644 --- a/lib/pages/pgc_review/child/controller.dart +++ b/lib/pages/pgc_review/child/controller.dart @@ -64,7 +64,7 @@ class PgcReviewController mediaId: mediaId, reviewId: reviewId, ); - if (res['status']) { + if (res.isSuccess) { int likes = item.stat?.likes ?? 0; item.stat ?..liked = isLike ? 0 : 1 @@ -74,7 +74,7 @@ class PgcReviewController } loadingState.refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -87,7 +87,7 @@ class PgcReviewController mediaId: mediaId, reviewId: reviewId, ); - if (res['status']) { + if (res.isSuccess) { item.stat?.disliked = isDislike ? 0 : 1; if (!isDislike) { if (item.stat?.liked == 1) { @@ -97,22 +97,22 @@ class PgcReviewController } loadingState.refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } - Future onDel(int index, int? reviewId) async { + Future onDel(int index, int reviewId) async { var res = await PgcHttp.pgcReviewDel( mediaId: mediaId, reviewId: reviewId, ); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.removeAt(index) ..refresh(); SmartDialog.showToast('删除成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index 99581fa00..ccca87163 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -153,7 +153,7 @@ class _PgcReviewChildPageState extends State showConfirmDialog( context: context, title: '删除短评,同时删除评分?', - onConfirm: () => _controller.onDel(index, item.reviewId), + onConfirm: () => _controller.onDel(index, item.reviewId!), ); }, ), diff --git a/lib/pages/pgc_review/post/view.dart b/lib/pages/pgc_review/post/view.dart index 982741411..dbefb79c4 100644 --- a/lib/pages/pgc_review/post/view.dart +++ b/lib/pages/pgc_review/post/view.dart @@ -222,11 +222,11 @@ class _PgcReviewPostPanelState extends State { content: _controller.text, reviewId: widget.reviewId, ); - if (res['status']) { + if (res.isSuccess) { Get.back(); SmartDialog.showToast('编辑成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } return; } @@ -240,11 +240,11 @@ class _PgcReviewPostPanelState extends State { content: _controller.text, shareFeed: _isMod ? false : _shareFeed.value, ); - if (res['status']) { + if (res.isSuccess) { Get.back(); SmartDialog.showToast('点评成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index 7415388d3..bf5eceff9 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -214,10 +214,9 @@ class SSearchController extends GetxController @override Future onValueChanged(String value) async { var res = await SearchHttp.searchSuggest(term: value); - if (res['status']) { - SearchSuggestModel data = res['data']; - if (data.tag?.isNotEmpty == true) { - searchSuggestList.value = data.tag!; + if (res case Success(:final response)) { + if (response.tag?.isNotEmpty == true) { + searchSuggestList.value = response.tag!; } } } diff --git a/lib/pages/space_setting/controller.dart b/lib/pages/space_setting/controller.dart index 565f348c0..f5c48e33d 100644 --- a/lib/pages/space_setting/controller.dart +++ b/lib/pages/space_setting/controller.dart @@ -3,7 +3,6 @@ import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/models_new/space_setting/data.dart'; import 'package:PiliPlus/models_new/space_setting/privacy.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class SpaceSettingController extends CommonDataController { @@ -39,8 +38,8 @@ class SpaceSettingController for (var e in data.list3) e.key: e.value, }, ); - if (!res['status']) { - SmartDialog.showToast(res['msg']); + if (!res.isSuccess) { + res.toast(); } } } diff --git a/lib/pages/subscription/controller.dart b/lib/pages/subscription/controller.dart index db65d81e3..1305ec51c 100644 --- a/lib/pages/subscription/controller.dart +++ b/lib/pages/subscription/controller.dart @@ -48,13 +48,13 @@ class SubController extends CommonListController { id: subFolderItem.id!, type: subFolderItem.type!, ); - if (res['status']) { + if (res.isSuccess) { loadingState ..value.data!.remove(subFolderItem) ..refresh(); SmartDialog.showToast('取消订阅成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } Get.back(); }, diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index a18e362ce..ada6bad7f 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -29,7 +29,6 @@ import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/common/video/video_type.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; -import 'package:PiliPlus/models_new/media_list/data.dart'; import 'package:PiliPlus/models_new/media_list/media_list.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/result.dart'; import 'package:PiliPlus/models_new/sponsor_block/segment_item.dart'; @@ -37,7 +36,6 @@ import 'package:PiliPlus/models_new/video/video_detail/data.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart' as ugc; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; import 'package:PiliPlus/models_new/video/video_pbp/data.dart'; -import 'package:PiliPlus/models_new/video/video_play_info/data.dart'; import 'package:PiliPlus/models_new/video/video_play_info/subtitle.dart'; import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/data.dart'; import 'package:PiliPlus/pages/audio/view.dart'; @@ -379,11 +377,10 @@ class VideoDetailController extends GetxController ? true : false, ); - if (res['status']) { - MediaListData data = res['data']; - if (data.mediaList.isNotEmpty) { + if (res case Success(:final response)) { + if (response.mediaList.isNotEmpty) { if (isReverse) { - mediaList.value = data.mediaList; + mediaList.value = response.mediaList; for (var item in mediaList) { if (item.cid != null) { try { @@ -395,13 +392,13 @@ class VideoDetailController extends GetxController } } } else if (isLoadPrevious) { - mediaList.insertAll(0, data.mediaList); + mediaList.insertAll(0, response.mediaList); } else { - mediaList.addAll(data.mediaList); + mediaList.addAll(response.mediaList); } } } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -444,11 +441,11 @@ class VideoDetailController extends GetxController resources: '${item.aid}:${item.type}', delIds: '${args['mediaId']}', ); - if (res['status']) { + if (res.isSuccess) { mediaList.removeAt(index); SmartDialog.showToast('取消收藏'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } @@ -1543,14 +1540,13 @@ class VideoDetailController extends GetxController seasonId: seasonId, epId: epId, ); - if (res['status']) { - PlayInfoData playInfo = res['data']; + if (res case Success(:final response)) { // interactive video if (isUgc && graphVersion == null) { try { final introCtr = Get.find(tag: heroTag); if (introCtr.videoDetail.value.rights?.isSteinGate == 1) { - graphVersion = playInfo.interaction?.graphVersion; + graphVersion = response.interaction?.graphVersion; getSteinEdgeInfo(); } } catch (e) { @@ -1565,11 +1561,11 @@ class VideoDetailController extends GetxController tag: heroTag, ); if ((ugcIntroController.videoDetail.value.pages?.length ?? 0) > 1 && - playInfo.lastPlayCid != null && - playInfo.lastPlayCid != 0) { - if (playInfo.lastPlayCid != cid.value) { + response.lastPlayCid != null && + response.lastPlayCid != 0) { + if (response.lastPlayCid != cid.value) { int index = ugcIntroController.videoDetail.value.pages! - .indexWhere((item) => item.cid == playInfo.lastPlayCid); + .indexWhere((item) => item.cid == response.lastPlayCid); if (index != -1) { onAddItem(index); } @@ -1579,9 +1575,9 @@ class VideoDetailController extends GetxController } if (plPlayerController.showViewPoints && - playInfo.viewPoints?.firstOrNull?.type == 2) { + response.viewPoints?.firstOrNull?.type == 2) { try { - viewPointList.value = playInfo.viewPoints!.map((item) { + viewPointList.value = response.viewPoints!.map((item) { double start = (item.to! / (data.timeLength! / 1000)).clamp( 0.0, 1.0, @@ -1599,8 +1595,8 @@ class VideoDetailController extends GetxController } catch (_) {} } - if (playInfo.subtitle?.subtitles?.isNotEmpty == true) { - subtitles.value = playInfo.subtitle!.subtitles!; + if (response.subtitle?.subtitles?.isNotEmpty == true) { + subtitles.value = response.subtitle!.subtitles!; final idx = switch (SubtitlePrefType.values[Pref .subtitlePreferenceV2]) { diff --git a/lib/pages/video/introduction/pgc/controller.dart b/lib/pages/video/introduction/pgc/controller.dart index c419f960d..a322cb2e7 100644 --- a/lib/pages/video/introduction/pgc/controller.dart +++ b/lib/pages/video/introduction/pgc/controller.dart @@ -3,15 +3,14 @@ import 'dart:math' show max; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/fav.dart'; +import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/pgc.dart'; import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/common/video/source_type.dart'; import 'package:PiliPlus/models/common/video/video_type.dart'; -import 'package:PiliPlus/models/pgc_lcf.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/episode.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/result.dart'; -import 'package:PiliPlus/models_new/triple/pgc_triple.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart' hide EpisodeItem; import 'package:PiliPlus/models_new/video/video_detail/stat_detail.dart'; @@ -75,11 +74,10 @@ class PgcIntroController extends CommonIntroController { // 获取点赞/投币/收藏状态 Future queryPgcLikeCoinFav() async { - var result = await VideoHttp.pgcLikeCoinFav(epId: epId); - if (result['status']) { - PgcLCF data = result['data']; - final hasLike = data.like == 1; - final hasFav = data.favorite == 1; + var result = await VideoHttp.pgcLikeCoinFav(epId: epId!); + if (result case Success(:final response)) { + final hasLike = response.like == 1; + final hasFav = response.favorite == 1; late final stat = pgcItem.stat!; if (hasLike) { stat.like = max(1, stat.like); @@ -88,10 +86,10 @@ class PgcIntroController extends CommonIntroController { stat.favorite = max(1, stat.favorite); } this.hasLike.value = hasLike; - coinNum.value = data.coinNumber!; + coinNum.value = response.coinNumber!; this.hasFav.value = hasFav; } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -104,12 +102,12 @@ class PgcIntroController extends CommonIntroController { } final newVal = !hasLike.value; var result = await VideoHttp.likeVideo(bvid: bvid, type: newVal); - if (result['status']) { - SmartDialog.showToast(newVal ? result['data']['toast'] : '取消赞'); + if (result case Success(:final response)) { + SmartDialog.showToast(newVal ? response : '取消赞'); pgcItem.stat!.like += newVal ? 1 : -1; hasLike.value = newVal; } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -331,20 +329,24 @@ class PgcIntroController extends CommonIntroController { // 追番 Future pgcAdd() async { var result = await VideoHttp.pgcAdd(seasonId: pgcItem.seasonId); - if (result['status']) { + if (result case Success(:final response)) { isFollowed.value = true; followStatus.value = 2; + SmartDialog.showToast(response); + } else { + result.toast(); } - SmartDialog.showToast(result['msg']); } // 取消追番 Future pgcDel() async { var result = await VideoHttp.pgcDel(seasonId: pgcItem.seasonId); - if (result['status']) { + if (result case Success(:final response)) { isFollowed.value = false; + SmartDialog.showToast(response); + } else { + result.toast(); } - SmartDialog.showToast(result['msg']); } Future pgcUpdate(int status) async { @@ -352,10 +354,12 @@ class PgcIntroController extends CommonIntroController { seasonId: pgcItem.seasonId.toString(), status: status, ); - if (result['status']) { + if (result case Success(:final response)) { followStatus.value = status; + SmartDialog.showToast(response); + } else { + result.toast(); } - SmartDialog.showToast(result['msg']); } @override @@ -419,20 +423,19 @@ class PgcIntroController extends CommonIntroController { SmartDialog.showToast('已三连'); return; } - var result = await VideoHttp.pgcTriple(epId: epId, seasonId: seasonId); - if (result['status']) { - PgcTriple data = result['data']; + var result = await VideoHttp.pgcTriple(epId: epId!, seasonId: seasonId); + if (result case Success(:final response)) { late final stat = pgcItem.stat!; - if (data.like == 1 && !hasLike.value) { + if (response.like == 1 && !hasLike.value) { stat.like++; hasLike.value = true; } - if (data.coin == 1 && !hasCoin) { + if (response.coin == 1 && !hasCoin) { stat.coin += 2; coinNum.value = 2; GlobalData().afterCoin(2); } - if (data.favorite == 1 && !hasFav.value) { + if (response.favorite == 1 && !hasFav.value) { stat.favorite++; hasFav.value = true; } @@ -442,7 +445,7 @@ class PgcIntroController extends CommonIntroController { SmartDialog.showToast('三连成功'); } } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -472,9 +475,9 @@ class PgcIntroController extends CommonIntroController { // } // }); - final res = await PgcHttp.seasonStatus(seasonId); + final res = await PgcHttp.seasonStatus(seasonId!); if (res['status']) { - final data = res['data']; + final Map data = res['data']; isFollowed.value = data['follow'] == 1; followStatus.value = data['follow_status']; } @@ -496,13 +499,13 @@ class PgcIntroController extends CommonIntroController { Future onFavPugv(bool isFav) async { final res = isFav - ? await FavHttp.delFavPugv(seasonId) - : await FavHttp.addFavPugv(seasonId); - if (res['status']) { + ? await FavHttp.delFavPugv(seasonId!) + : await FavHttp.addFavPugv(seasonId!); + if (res.isSuccess) { this.isFav.value = !isFav; SmartDialog.showToast('${isFav ? '取消' : ''}收藏成功'); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } } diff --git a/lib/pages/video/introduction/ugc/controller.dart b/lib/pages/video/introduction/ugc/controller.dart index e0c4b4003..dfeaa1382 100644 --- a/lib/pages/video/introduction/ugc/controller.dart +++ b/lib/pages/video/introduction/ugc/controller.dart @@ -12,8 +12,6 @@ import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/common/video/source_type.dart'; import 'package:PiliPlus/models_new/member_card_info/data.dart'; -import 'package:PiliPlus/models_new/triple/ugc_triple.dart'; -import 'package:PiliPlus/models_new/video/video_ai_conclusion/data.dart'; import 'package:PiliPlus/models_new/video/video_ai_conclusion/model_result.dart'; import 'package:PiliPlus/models_new/video/video_detail/data.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart'; @@ -190,19 +188,18 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { return; } var result = await VideoHttp.ugcTriple(bvid: bvid); - if (result['status']) { - UgcTriple data = result['data']; + if (result case Success(:final response)) { late final stat = videoDetail.value.stat!; - if (data.like == true && !hasLike.value) { + if (response.like == true && !hasLike.value) { stat.like++; hasLike.value = true; } - if (data.coin == true && !hasCoin) { + if (response.coin == true && !hasCoin) { stat.coin += 2; coinNum.value = 2; GlobalData().afterCoin(2); } - if (data.fav == true && !hasFav.value) { + if (response.fav == true && !hasFav.value) { stat.favorite++; hasFav.value = true; } @@ -213,7 +210,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { SmartDialog.showToast('三连成功'); } } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -229,15 +226,15 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { } final newVal = !hasLike.value; var result = await VideoHttp.likeVideo(bvid: bvid, type: newVal); - if (result['status']) { - SmartDialog.showToast(newVal ? result['data']['toast'] : '取消赞'); + if (result case Success(:final response)) { + SmartDialog.showToast(newVal ? response : '取消赞'); videoDetail.value.stat!.like += newVal ? 1 : -1; hasLike.value = newVal; if (newVal) { hasDislike.value = false; } } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -250,7 +247,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { bvid: bvid, type: !hasDislike.value, ); - if (result['status']) { + if (result.isSuccess) { if (!hasDislike.value) { SmartDialog.showToast('点踩成功'); hasDislike.value = true; @@ -263,7 +260,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { hasDislike.value = false; } } else { - SmartDialog.showToast(result['msg']); + result.toast(); } } @@ -441,7 +438,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { act: 6, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { followStatus['attribute'] = 0; } return; @@ -762,10 +759,9 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { upMid: mid, ); SmartDialog.dismiss(); - if (res['status']) { - AiConclusionData data = res['data']; - return data.modelResult; - } else if (res['handling']) { + if (res case Success(:final response)) { + return response.modelResult; + } else if (res is Error && res.code == 1) { SmartDialog.showToast("AI处理中,请稍后再试"); } else { SmartDialog.showToast("当前视频暂不支持AI视频总结"); diff --git a/lib/pages/video/member/controller.dart b/lib/pages/video/member/controller.dart index 399ea9077..880ad72ec 100644 --- a/lib/pages/video/member/controller.dart +++ b/lib/pages/video/member/controller.dart @@ -27,13 +27,11 @@ class HorizontalMemberPageController } Future getUserInfo() async { - var res = await MemberHttp.memberInfo(mid: mid); - if (res['status']) { - userState.value = Success(res['data']); + final res = await MemberHttp.memberInfo(mid: mid); + userState.value = res; + if (res.isSuccess) { getMemberStat(); getMemberView(); - } else { - userState.value = Error(res['msg']); } } diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 6a019318c..2c7eeeab2 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -951,11 +951,11 @@ class ReplyItemGrpc extends StatelessWidget { rpid: item.id.toInt(), ); SmartDialog.dismiss(); - if (result['status']) { + if (result.isSuccess) { SmartDialog.showToast('删除成功'); onDelete(); } else { - SmartDialog.showToast('删除失败, ${result["msg"]}'); + SmartDialog.showToast('删除失败, $result'); } }, minLeadingWidth: 0, diff --git a/lib/pages/video/reply/widgets/zan_grpc.dart b/lib/pages/video/reply/widgets/zan_grpc.dart index 715bea665..b6218051c 100644 --- a/lib/pages/video/reply/widgets/zan_grpc.dart +++ b/lib/pages/video/reply/widgets/zan_grpc.dart @@ -39,7 +39,7 @@ class ZanButtonGrpc extends StatelessWidget { rpid: rpid, ); // SmartDialog.dismiss(); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast(isDislike ? '取消踩' : '点踩成功'); if (action == 2) { if (isLike) replyItem.like -= $fixnum.Int64.ONE; @@ -51,7 +51,7 @@ class ZanButtonGrpc extends StatelessWidget { (context as Element?)?.markNeedsBuild(); } } else { - SmartDialog.showToast(res['msg']); + res.toast(); } onDone(); } @@ -79,7 +79,7 @@ class ZanButtonGrpc extends StatelessWidget { rpid: rpid, action: action, ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast(isLike ? '取消赞' : '点赞成功'); if (action == 1) { replyItem @@ -94,7 +94,7 @@ class ZanButtonGrpc extends StatelessWidget { (context as Element?)?.markNeedsBuild(); } } else { - SmartDialog.showToast(res['msg']); + res.toast(); } onDone(); } diff --git a/lib/pages/whisper/widgets/item.dart b/lib/pages/whisper/widgets/item.dart index 1a7297df3..8e55fe0f6 100644 --- a/lib/pages/whisper/widgets/item.dart +++ b/lib/pages/whisper/widgets/item.dart @@ -28,7 +28,7 @@ class WhisperSessionItem extends StatelessWidget { final Session item; final Function(bool isTop, SessionId id) onSetTop; final Function(bool isMuted, Int64 talkerUid) onSetMute; - final ValueChanged onRemove; + final ValueChanged onRemove; @override Widget build(BuildContext context) { diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 7022d32d0..767dfe542 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -60,8 +60,8 @@ class WhisperDetailController extends CommonListController { talkerId: talkerId, ackSeqno: msgSeqno, ); - if (!res['status']) { - SmartDialog.showToast(res['msg']); + if (!res.isSuccess) { + res.toast(); } } diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index e76dc03fa..8eb28d74d 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -9,7 +9,6 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/publish_panel_type.dart'; -import 'package:PiliPlus/models_new/upload_bfs/data.dart'; import 'package:PiliPlus/pages/common/publish/common_rich_text_pub_page.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/pages/whisper_detail/controller.dart'; @@ -318,18 +317,17 @@ class _WhisperDetailPageState path: path, biz: 'im', ); - if (result['status']) { - String mimeType = + if (result case Success(:final response)) { + final mimeType = lookupMimeType(path)?.split('/').getOrNull(1) ?? 'jpg'; - UploadBfsResData data = result['data']; - Map picMsg = { - 'url': data.imageUrl, - 'height': data.imageHeight, - 'width': data.imageWidth, + final picMsg = { + 'url': response.imageUrl, + 'height': response.imageHeight, + 'width': response.imageWidth, 'imageType': mimeType, 'original': 1, - 'size': data.imgSize, + 'size': response.imgSize, }; SmartDialog.showLoading(msg: '正在发送'); await _whisperDetailController @@ -344,7 +342,7 @@ class _WhisperDetailPageState }); } else { SmartDialog.dismiss(); - SmartDialog.showToast(result['msg']); + result.toast(); return; } } diff --git a/lib/pages/whisper_link_setting/controller.dart b/lib/pages/whisper_link_setting/controller.dart index 6ba19ad4e..61038d673 100644 --- a/lib/pages/whisper_link_setting/controller.dart +++ b/lib/pages/whisper_link_setting/controller.dart @@ -12,7 +12,6 @@ import 'package:PiliPlus/models_new/msg/msg_dnd/uid_setting.dart'; import 'package:PiliPlus/models_new/msg/session_ss/data.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:fixnum/fixnum.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; class WhisperLinkSettingController extends GetxController { @@ -80,12 +79,12 @@ class WhisperLinkSettingController extends GetxController { setting: setting, talkerUid: talkerUid, ); - if (res['status']) { + if (res.isSuccess) { sessionSs ..value.data.pushSetting = setting ..refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -107,12 +106,12 @@ class WhisperLinkSettingController extends GetxController { setting: setting, dndUid: talkerUid, ); - if (res['status']) { + if (res.isSuccess) { msgDnd ..value.data!.first.setting = setting ..refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } @@ -123,12 +122,12 @@ class WhisperLinkSettingController extends GetxController { act: 6, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { sessionSs ..value.data.followStatus = null ..refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } } else { showConfirmDialog( @@ -141,12 +140,12 @@ class WhisperLinkSettingController extends GetxController { act: 5, reSrc: 11, ); - if (res['status']) { + if (res.isSuccess) { sessionSs ..value.data.followStatus = 128 ..refresh(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }, ); diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index 6281fe627..05885f12a 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -37,15 +37,15 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart' hide ContextExtensionss; import 'package:gt3_flutter_plugin/gt3_flutter_plugin.dart'; -abstract class RequestUtils { +abstract final class RequestUtils { static Future syncHistoryStatus() async { final account = Accounts.history; if (!account.isLogin) { return; } var res = await UserHttp.historyStatus(account: account); - if (res['status']) { - GStorage.localCache.put(LocalCacheKey.historyPause, res['data']); + if (res case Success(:final response)) { + GStorage.localCache.put(LocalCacheKey.historyPause, response); } } @@ -121,9 +121,11 @@ abstract class RequestUtils { act: 1, reSrc: 11, ); - SmartDialog.showToast(res['status'] ? "关注成功" : res['msg']); - if (res['status']) { + if (res.isSuccess) { + SmartDialog.showToast('关注成功'); callback?.call(2); + } else { + res.toast(); } } else { if (followStatus?['tag'] == null) { @@ -156,11 +158,11 @@ abstract class RequestUtils { fid: mid, isAdd: !isSpecialFollowed, ); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast('$text成功'); callback?.call(isSpecialFollowed ? 2 : -10); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }, title: Text( @@ -220,11 +222,11 @@ abstract class RequestUtils { act: 2, reSrc: 11, ); - SmartDialog.showToast( - res['status'] ? "取消关注成功" : res['msg'], - ); - if (res['status']) { + if (res.isSuccess) { + SmartDialog.showToast('取消关注成功'); callback?.call(0); + } else { + res.toast(); } }, title: const Text( @@ -371,7 +373,7 @@ abstract class RequestUtils { bool status = like?.status ?? false; int up = status ? 2 : 1; var res = await DynamicsHttp.thumbDynamic(dynamicId: dynamicId, up: up); - if (res['status']) { + if (res.isSuccess) { SmartDialog.showToast(!status ? '点赞成功' : '取消赞'); if (up == 1) { like @@ -384,7 +386,7 @@ abstract class RequestUtils { } onSuccess(); } else { - SmartDialog.showToast(res['msg']); + res.toast(); } }