opt models

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-06-04 15:20:35 +08:00
parent f50b1d2beb
commit b960359a39
858 changed files with 11000 additions and 12588 deletions

View File

@@ -1,7 +1,7 @@
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/models/fav_article/data.dart';
import 'package:PiliPlus/models/fav_article/item.dart';
import 'package:PiliPlus/models_new/fav/fav_article/data.dart';
import 'package:PiliPlus/models_new/fav/fav_article/item.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -23,10 +23,10 @@ class FavArticleController
@override
Future<LoadingState<FavArticleData>> customGetData() =>
UserHttp.favArticle(page: page);
FavHttp.favArticle(page: page);
Future<void> onRemove(index, id) async {
final res = await UserHttp.communityAction(opusId: id, action: 4);
Future<void> onRemove(int index, String? id) async {
final res = await FavHttp.communityAction(opusId: id, action: 4);
if (res['status']) {
loadingState
..value.data!.removeAt(index)

View File

@@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/fav_article/item.dart';
import 'package:PiliPlus/models_new/fav/fav_article/item.dart';
import 'package:PiliPlus/pages/fav/article/controller.dart';
import 'package:PiliPlus/pages/fav/article/widget/item.dart';
import 'package:PiliPlus/utils/grid.dart';

View File

@@ -2,7 +2,7 @@ import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/stat/stat.dart';
import 'package:PiliPlus/models/fav_article/item.dart';
import 'package:PiliPlus/models_new/fav/fav_article/item.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

View File

@@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/member/article.dart';
import 'package:PiliPlus/models_new/fav/fav_note/list.dart';
import 'package:PiliPlus/pages/fav/note/controller.dart';
import 'package:PiliPlus/pages/fav/note/widget/item.dart';
import 'package:PiliPlus/utils/grid.dart';
@@ -132,7 +132,7 @@ class _FavNoteChildPageState extends State<FavNoteChildPage>
);
}
Widget _buildBody(LoadingState<List<FavNoteModel>?> loadingState) {
Widget _buildBody(LoadingState<List<FavNoteItemModel>?> loadingState) {
return switch (loadingState) {
Loading() => SliverGrid(
gridDelegate: Grid.videoCardHDelegate(context),

View File

@@ -1,11 +1,11 @@
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/member/article.dart';
import 'package:PiliPlus/models_new/fav/fav_note/list.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
class FavNoteController
extends MultiSelectController<List<FavNoteModel>?, FavNoteModel> {
extends MultiSelectController<List<FavNoteItemModel>?, FavNoteItemModel> {
FavNoteController(this.isPublish);
final bool isPublish;
@@ -28,24 +28,24 @@ class FavNoteController
}
@override
Future<LoadingState<List<FavNoteModel>?>> customGetData() {
Future<LoadingState<List<FavNoteItemModel>?>> customGetData() {
return isPublish
? VideoHttp.userNoteList(page: page)
: VideoHttp.noteList(page: page);
? FavHttp.userNoteList(page: page)
: FavHttp.noteList(page: page);
}
Future<void> onRemove() async {
List<FavNoteModel> dataList = loadingState.value.data!;
Set<FavNoteModel> removeList =
List<FavNoteItemModel> dataList = loadingState.value.data!;
Set<FavNoteItemModel> removeList =
dataList.where((item) => item.checked == true).toSet();
final res = await VideoHttp.delNote(
final res = await FavHttp.delNote(
isPublish: isPublish,
noteIds: removeList
.map((item) => isPublish ? item.cvid : item.noteId)
.toList(),
);
if (res['status']) {
List<FavNoteModel> remainList =
List<FavNoteItemModel> remainList =
dataList.toSet().difference(removeList).toList();
loadingState.value = Success(remainList);
enableMultiSelect.value = false;

View File

@@ -1,6 +1,6 @@
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/member/article.dart';
import 'package:PiliPlus/models_new/fav/fav_note/list.dart';
import 'package:PiliPlus/pages/fav/note/controller.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart';
@@ -13,7 +13,7 @@ class FavNoteItem extends StatelessWidget {
required this.onSelect,
});
final FavNoteModel item;
final FavNoteItemModel item;
final FavNoteController ctr;
final VoidCallback onSelect;

View File

@@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/pgc/list.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart';
import 'package:PiliPlus/pages/fav/pgc/controller.dart';
import 'package:PiliPlus/pages/fav/pgc/widget/item.dart';
import 'package:PiliPlus/utils/grid.dart';
@@ -155,7 +155,7 @@ class _FavPgcChildPageState extends State<FavPgcChildPage>
);
}
Widget _buildBody(LoadingState<List<BangumiListItemModel>?> loadingState) {
Widget _buildBody(LoadingState<List<FavPgcItemModel>?> loadingState) {
return switch (loadingState) {
Loading() => SliverGrid(
gridDelegate: Grid.videoCardHDelegate(context),
@@ -185,7 +185,7 @@ class _FavPgcChildPageState extends State<FavPgcChildPage>
followStatus: widget.followStatus,
onUpdateStatus: (followStatus) {
if (followStatus == -1) {
_favPgcController.bangumiDel(
_favPgcController.pgcDel(
index,
item.seasonId,
);

View File

@@ -1,7 +1,8 @@
import 'package:PiliPlus/http/bangumi.dart';
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/pgc/list.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/data.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
@@ -10,7 +11,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class FavPgcController
extends MultiSelectController<BangumiListDataModel, BangumiListItemModel> {
extends MultiSelectController<FavPgcData, FavPgcItemModel> {
final int type;
final int followStatus;
@@ -34,13 +35,12 @@ class FavPgcController
}
@override
List<BangumiListItemModel>? getDataList(BangumiListDataModel response) {
List<FavPgcItemModel>? getDataList(FavPgcData response) {
return response.list;
}
@override
Future<LoadingState<BangumiListDataModel>> customGetData() =>
BangumiHttp.bangumiFollowList(
Future<LoadingState<FavPgcData>> customGetData() => FavHttp.favPgc(
mid: Accounts.main.mid,
type: type,
followStatus: followStatus,
@@ -55,8 +55,8 @@ class FavPgcController
}
// 取消追番
Future<void> bangumiDel(index, seasonId) async {
var result = await VideoHttp.bangumiDel(seasonId: seasonId);
Future<void> pgcDel(int index, seasonId) async {
var result = await VideoHttp.pgcDel(seasonId: seasonId);
if (result['status']) {
loadingState
..value.data!.removeAt(index)
@@ -66,15 +66,15 @@ class FavPgcController
}
Future<void> onUpdateList(followStatus) async {
List<BangumiListItemModel> dataList = loadingState.value.data!;
Set<BangumiListItemModel> updateList =
List<FavPgcItemModel> dataList = loadingState.value.data!;
Set<FavPgcItemModel> updateList =
dataList.where((item) => item.checked == true).toSet();
final res = await VideoHttp.bangumiUpdate(
final res = await VideoHttp.pgcUpdate(
seasonId: updateList.map((item) => item.seasonId).toList(),
status: followStatus,
);
if (res['status']) {
List<BangumiListItemModel> remainList =
List<FavPgcItemModel> remainList =
dataList.toSet().difference(updateList).toList();
loadingState.value = Success(remainList);
enableMultiSelect.value = false;
@@ -96,12 +96,12 @@ class FavPgcController
}
Future<void> onUpdate(index, followStatus, seasonId) async {
var result = await VideoHttp.bangumiUpdate(
var result = await VideoHttp.pgcUpdate(
seasonId: [seasonId],
status: followStatus,
);
if (result['status']) {
List<BangumiListItemModel> list = loadingState.value.data!;
List<FavPgcItemModel> list = loadingState.value.data!;
final item = list.removeAt(index);
loadingState.refresh();
try {
@@ -113,7 +113,7 @@ class FavPgcController
ctr.allSelected.value = false;
}
} catch (e) {
if (kDebugMode) debugPrint('fav pgc bangumiUpdate: $e');
if (kDebugMode) debugPrint('fav pgc pgcUpdate: $e');
}
}
SmartDialog.showToast(result['msg']);

View File

@@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/badge.dart';
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/common/badge_type.dart';
import 'package:PiliPlus/models/pgc/list.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart';
@@ -17,7 +17,7 @@ class FavPgcItem extends StatelessWidget {
required this.onUpdateStatus,
});
final BangumiListItemModel item;
final FavPgcItemModel item;
final MultiSelectController ctr;
final VoidCallback onSelect;
final VoidCallback onUpdateStatus;
@@ -36,7 +36,7 @@ class FavPgcItem extends StatelessWidget {
onSelect();
return;
}
PageUtils.viewBangumi(seasonId: item.seasonId);
PageUtils.viewPgc(seasonId: item.seasonId);
},
onLongPress: () {
if (!ctr.enableMultiSelect.value) {

View File

@@ -1,12 +1,12 @@
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/models/user/fav_topic/data.dart';
import 'package:PiliPlus/models/user/fav_topic/topic_item.dart';
import 'package:PiliPlus/models_new/fav/fav_topic/data.dart';
import 'package:PiliPlus/models_new/fav/fav_topic/topic_item.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
class FavTopicController
extends CommonListController<FavTopicData, FavTopicModel> {
extends CommonListController<FavTopicData, FavTopicItem> {
int? total;
@override
@@ -23,7 +23,7 @@ class FavTopicController
}
@override
List<FavTopicModel>? getDataList(FavTopicData response) {
List<FavTopicItem>? getDataList(FavTopicData response) {
total = response.topicList?.pageInfo?.total;
return response.topicList?.topicItems;
}
@@ -36,10 +36,10 @@ class FavTopicController
@override
Future<LoadingState<FavTopicData>> customGetData() =>
UserHttp.favTopic(page: page);
FavHttp.favTopic(page: page);
Future<void> onRemove(index, id) async {
var res = await UserHttp.delFavTopic(id);
var res = await FavHttp.delFavTopic(id);
if (res['status']) {
loadingState
..value.data!.removeAt(index)

View File

@@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/user/fav_topic/topic_item.dart';
import 'package:PiliPlus/models_new/fav/fav_topic/topic_item.dart';
import 'package:PiliPlus/pages/fav/topic/controller.dart';
import 'package:PiliPlus/utils/grid.dart';
import 'package:flutter/material.dart';
@@ -49,7 +49,7 @@ class _FavTopicPageState extends State<FavTopicPage>
}
Widget _buildBody(
ThemeData theme, LoadingState<List<FavTopicModel>?> loadingState) {
ThemeData theme, LoadingState<List<FavTopicItem>?> loadingState) {
return switch (loadingState) {
Loading() => const SliverToBoxAdapter(child: LinearProgressIndicator()),
Success(:var response) => response?.isNotEmpty == true

View File

@@ -1,11 +1,12 @@
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/models/user/fav_folder.dart';
import 'package:PiliPlus/models_new/fav/fav_video/data.dart';
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/utils/storage.dart';
class FavController
extends CommonListController<FavFolderData, FavFolderItemData> {
extends CommonListController<FavVideoData, FavVideoItemModel> {
late final dynamic mid = Accounts.main.mid;
@override
@@ -24,12 +25,12 @@ class FavController
}
@override
List<FavFolderItemData>? getDataList(FavFolderData response) {
List<FavVideoItemModel>? getDataList(FavVideoData response) {
return response.list;
}
@override
bool customHandleResponse(bool isRefresh, Success<FavFolderData> response) {
bool customHandleResponse(bool isRefresh, Success<FavVideoData> response) {
if (response.response.hasMore == false) {
isEnd = true;
}
@@ -37,7 +38,7 @@ class FavController
}
@override
Future<LoadingState<FavFolderData>> customGetData() => UserHttp.userfavFolder(
Future<LoadingState<FavVideoData>> customGetData() => FavHttp.userfavFolder(
pn: page,
ps: 20,
mid: mid,

View File

@@ -3,7 +3,7 @@ import 'package:PiliPlus/common/skeleton/video_card_h.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/user/fav_folder.dart';
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
import 'package:PiliPlus/pages/fav/video/controller.dart';
import 'package:PiliPlus/pages/fav/video/widgets/item.dart';
import 'package:PiliPlus/utils/grid.dart';
@@ -48,7 +48,7 @@ class _FavVideoPageState extends State<FavVideoPage>
);
}
Widget _buildBody(LoadingState<List<FavFolderItemData>?> loadingState) {
Widget _buildBody(LoadingState<List<FavVideoItemModel>?> loadingState) {
return switch (loadingState) {
Loading() => SliverGrid(
gridDelegate: Grid.videoCardHDelegate(context),
@@ -70,7 +70,7 @@ class _FavVideoPageState extends State<FavVideoPage>
}
final item = response[index];
String heroTag = Utils.makeHeroTag(item.fid);
return FavItem(
return FavVideoItem(
heroTag: heroTag,
favFolderItem: item,
onTap: () async {

View File

@@ -1,17 +1,17 @@
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/user/fav_folder.dart';
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
class FavItem extends StatelessWidget {
class FavVideoItem extends StatelessWidget {
final String heroTag;
final FavFolderItemData favFolderItem;
final FavVideoItemModel favFolderItem;
final VoidCallback? onTap;
final VoidCallback? onLongPress;
const FavItem({
const FavVideoItem({
super.key,
this.onTap,
this.onLongPress,

View File

@@ -1,7 +1,7 @@
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/fav_type.dart';
import 'package:PiliPlus/models/user/fav_folder.dart';
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
import 'package:PiliPlus/pages/fav/article/controller.dart';
import 'package:PiliPlus/pages/fav/topic/controller.dart';
import 'package:PiliPlus/pages/fav/video/controller.dart';
@@ -60,7 +60,7 @@ class _FavPageState extends State<FavPage> with SingleTickerProviderStateMixin {
onPressed: () => Get.toNamed('/createFav')?.then(
(data) {
if (data != null) {
List<FavFolderItemData>? list =
List<FavVideoItemModel>? list =
_favController.loadingState.value.isSuccess
? _favController.loadingState.value.data
: null;