controller.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/utils/error_handler.dart';
  3. import 'package:get/get.dart';
  4. import 'package:get/get_core/src/get_main.dart';
  5. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  6. import 'package:pull_to_refresh/pull_to_refresh.dart';
  7. import '../../../data/api/response/example_info_response.dart';
  8. import '../../../data/bean/agenda.dart';
  9. import '../../../data/consts/event_report_id.dart';
  10. import '../../../data/repositories/account_repository.dart';
  11. import '../../../data/repositories/agenda_repository.dart';
  12. import '../../../data/repositories/config_repository.dart';
  13. import '../../../handler/event_handler.dart';
  14. import '../../../resource/string.gen.dart';
  15. import '../../../router/app_pages.dart';
  16. import '../../../utils/event_bus.dart';
  17. import '../../../utils/toast_util.dart';
  18. import '../../agenda/detail/view.dart';
  19. class HomeAgendaController extends BaseController {
  20. final refreshController = RefreshController(initialRefresh: false);
  21. RxList<Agenda> get agendaList => agendaRepository.agendaList;
  22. @override
  23. void onReady() {
  24. super.onReady();
  25. eventBus.on(EventUserLogin, (arg) {
  26. requestHomeAgendaData();
  27. });
  28. eventBus.on(EventUserLogout, (arg) {
  29. agendaRepository.setAgendaList([]);
  30. requestHomeAgendaData();
  31. });
  32. requestHomeAgendaData();
  33. EventHandler.report(EventId.event_100101);
  34. }
  35. @override
  36. void onClose() {
  37. eventBus.off(EventUserLogin);
  38. eventBus.off(EventUserLogout);
  39. }
  40. void requestHomeAgendaData() async {
  41. try {
  42. if (accountRepository.isLogin.value) {
  43. await agendaRepository.requestHomeAgendaData();
  44. } else {
  45. ExampleInfoResponse exampleInfo =
  46. await configRepository.getExampleInfo();
  47. agendaRepository.setAgendaList(
  48. exampleInfo.agendaList != null ? exampleInfo.agendaList! : []);
  49. }
  50. } catch (e) {
  51. ErrorHandler.toastError(e);
  52. } finally {
  53. refreshController.refreshCompleted();
  54. }
  55. }
  56. onRefresh() {
  57. requestHomeAgendaData();
  58. }
  59. void onGoAgendaSeeAll() {
  60. if (!accountRepository.isLogin.value) {
  61. Get.toNamed(RoutePath.login);
  62. ToastUtil.showToast(StringName.errorCodeNoLogin.tr);
  63. return;
  64. }
  65. Get.toNamed(RoutePath.task);
  66. }
  67. void onAgendaItemClick(Agenda item) {
  68. AgendaDetailPage.start(item);
  69. }
  70. void agendaComplete(Agenda item) {
  71. agendaRepository.agendaFinish(item.id, true).then((data) {
  72. agendaRepository.requestHomeAgendaData();
  73. }).catchError((error) {
  74. ErrorHandler.toastError(error);
  75. });
  76. }
  77. }