Files
PiliPlus/lib/pages/dynamics_tab/controller.dart
2026-06-24 13:18:17 +08:00

91 lines
2.6 KiB
Dart

import 'package:PiliPlus/http/dynamics.dart';
import 'package:PiliPlus/http/loading_state.dart';
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_controller.dart'
show CommonReloadMixin;
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/services/account_service.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class DynamicsTabController
extends CommonListController<DynamicsDataModel, DynamicItemModel>
with AccountMixin, CommonReloadMixin {
int hostMid = -1;
String? offset;
final Rx<DynamicsTabType> dynamicsType = Rx(.all);
late final outerController = Get.find<DynamicsController>();
late final MainController _mainController = Get.find<MainController>();
@override
void onInit() {
super.onInit();
queryData();
}
@override
Future<void> onRefresh() {
if (dynamicsType.value == .all) {
_mainController.setDynCount();
}
offset = null;
return super.onRefresh();
}
@override
List<DynamicItemModel>? getDataList(DynamicsDataModel response) {
offset = response.offset;
return response.items;
}
@override
Future<LoadingState<DynamicsDataModel>> customGetData() =>
DynamicsHttp.followDynamic(
offset: offset,
hostMid: hostMid,
type: dynamicsType.value,
tempBannedList: outerController.tempBannedList,
);
Future<void> onRemove(int index, dynamic dynamicId) async {
final res = await MsgHttp.removeDynamic(dynIdStr: dynamicId);
if (res.isSuccess) {
loadingState
..value.data!.removeAt(index)
..refresh();
SmartDialog.showToast('删除成功');
} else {
res.toast();
}
}
void onBlock(int index) {
if (dynamicsType.value != .up) {
loadingState
..value.data!.removeAt(index)
..refresh();
}
}
void onUnfold(DynamicItemModel item, int index) {
try {
final list = loadingState.value.data!;
final ids = item.modules.moduleFold!.ids!;
final flag = index + ids.length + 1;
for (int i = index + 1; i < flag; i++) {
list[i].visible = true;
}
item.modules.moduleFold = null;
loadingState.refresh();
} catch (_) {}
}
@override
void onChangeAccount(bool isLogin) => onReload();
}