import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class MemberDynamicsController extends CommonListController { MemberDynamicsController(this.mid); int mid; String offset = ''; @override void onInit() { super.onInit(); queryData(); } @override Future onRefresh() { offset = ''; return super.onRefresh(); } @override Future queryData([bool isRefresh = true]) { if (!isRefresh && (isEnd || offset == '-1')) { return Future.syncValue(null); } return super.queryData(isRefresh); } @override List? getDataList(DynamicsDataModel response) { offset = response.offset?.isNotEmpty == true ? response.offset! : '-1'; if (response.hasMore == false) { isEnd = true; } return response.items; } @override Future> customGetData() => MemberHttp.memberDynamic( offset: offset, mid: mid, ); Future onRemove(dynamic dynamicId) async { final res = await MsgHttp.removeDynamic(dynIdStr: dynamicId); if (res.isSuccess) { loadingState ..value.data!.removeWhere((item) => item.idStr == dynamicId) ..refresh(); SmartDialog.showToast('删除成功'); } else { res.toast(); } } Future onSetTop(bool isTop, Object dynamicId) async { final res = await (isTop ? DynamicsHttp.rmTop(dynamicId: dynamicId) : DynamicsHttp.setTop(dynamicId: dynamicId)); if (res.isSuccess) { List list = loadingState.value.data!; list[0].modules ..moduleTag = null ..moduleAuthor?.isTop = false; if (isTop) { loadingState.refresh(); SmartDialog.showToast('取消置顶成功'); } else { final item = list.firstWhere((item) => item.idStr == dynamicId); item.modules ..moduleTag = ModuleTag(text: '置顶') ..moduleAuthor?.isTop = true; list ..remove(item) ..insert(0, item); loadingState.refresh(); SmartDialog.showToast('置顶成功'); } } else { res.toast(); } } }