fix: dyn: temp ban

Closes #829

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-08 12:01:10 +08:00
parent b28882cff5
commit 222070feba
5 changed files with 49 additions and 39 deletions

View File

@@ -4,6 +4,7 @@ import 'package:PiliPlus/http/msg.dart';
import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/pages/dynamics/controller.dart';
import 'package:PiliPlus/pages/main/controller.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -16,6 +17,7 @@ class DynamicsTabController
String offset = '';
int? mid;
late final MainController mainController = Get.find<MainController>();
final dynamicsController = Get.find<DynamicsController>();
@override
void onInit() {
@@ -34,6 +36,11 @@ class DynamicsTabController
@override
List<DynamicItemModel>? getDataList(DynamicsDataModel response) {
if (dynamicsType != DynamicsTabType.up &&
dynamicsController.tempBannedList.isNotEmpty) {
response.items?.removeWhere((e) => dynamicsController.tempBannedList
.contains(e.modules.moduleAuthor?.mid));
}
return response.items;
}
@@ -52,11 +59,12 @@ class DynamicsTabController
mid: mid,
);
Future<void> onRemove(dynamic dynamicId) async {
Future<void> onRemove(int index, dynamic dynamicId) async {
var res = await MsgHttp.removeDynamic(dynIdStr: dynamicId);
if (res['status']) {
loadingState.value.data!.removeWhere((item) => item.idStr == dynamicId);
loadingState.refresh();
loadingState
..value.data!.removeAt(index)
..refresh();
SmartDialog.showToast('删除成功');
} else {
SmartDialog.showToast(res['msg']);
@@ -77,4 +85,10 @@ class DynamicsTabController
scrollController.jumpToTop();
return super.onReload();
}
void onBlock(int index) {
loadingState
..value.data!.removeAt(index)
..refresh();
}
}

View File

@@ -151,22 +151,15 @@ class _DynamicsTabPageState
: LastChildLayoutType.none;
},
children: [
if (dynamicsController.tabController.index == 4 &&
dynamicsController.mid.value != -1) ...[
for (var i in loadingState.response!)
DynamicPanel(
item: i,
onRemove: controller.onRemove,
),
] else ...[
for (var i in loadingState.response!)
if (!dynamicsController.tempBannedList
.contains(i.modules.moduleAuthor?.mid))
DynamicPanel(
item: i,
onRemove: controller.onRemove,
),
]
for (int index = 0;
index < loadingState.response!.length;
index++)
DynamicPanel(
item: loadingState.response![index],
onRemove: (idStr) =>
controller.onRemove(index, idStr),
onBlock: () => controller.onBlock(index),
)
],
)
: SliverCrossAxisGroup(
@@ -180,17 +173,12 @@ class _DynamicsTabPageState
controller.onLoadMore();
}
final item = loadingState.response![index];
if ((dynamicsController.tabController.index ==
4 &&
dynamicsController.mid.value != -1) ||
!dynamicsController.tempBannedList.contains(
item.modules.moduleAuthor?.mid)) {
return DynamicPanel(
item: item,
onRemove: controller.onRemove,
);
}
return const SizedBox.shrink();
return DynamicPanel(
item: item,
onRemove: (idStr) =>
controller.onRemove(index, idStr),
onBlock: () => controller.onBlock(index),
);
},
itemCount: loadingState.response!.length,
),