mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-03 15:50:18 +08:00
@@ -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)
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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']);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user