controller.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import 'dart:async';
  2. import 'package:electronic_assistant/base/base_controller.dart';
  3. import 'package:electronic_assistant/data/bean/agenda.dart';
  4. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  5. import 'package:electronic_assistant/module/chat/view.dart';
  6. import 'package:electronic_assistant/utils/error_handler.dart';
  7. import 'package:flutter/cupertino.dart';
  8. import 'package:get/get.dart';
  9. import '../../../data/bean/agenda_list_all_bean.dart';
  10. import '../../../data/bean/talks.dart';
  11. import '../../../utils/event_bus.dart';
  12. import '../controller.dart';
  13. class TodoController extends BaseController {
  14. static String refreshTalkMineTask = "refreshTalkMineTask";
  15. final TalkController _talkController = Get.find();
  16. StreamSubscription? _talkBeanListener;
  17. final agendaMineList = <Agenda>[].obs;
  18. final mineAgendaIsExpanded = false.obs;
  19. RxList<AgendaListAllBean> get agendaAllList => _talkController.agendaAllList;
  20. Rxn<TalkBean> get talkBean => _talkController.talkBean;
  21. bool get isEditModel => _talkController.isEditModelRx.value;
  22. @override
  23. void onReady() {
  24. super.onReady();
  25. _talkBeanListener = _talkController.talkBean.listen((bean) {
  26. _dealTalkUpdate(bean);
  27. });
  28. _dealTalkUpdate(_talkController.talkBean.value);
  29. _eventRefresh();
  30. }
  31. void _eventRefresh() {
  32. eventBus.on(refreshTalkMineTask, (data) {
  33. requestMineTodoData();
  34. });
  35. }
  36. void _dealTalkUpdate(TalkBean? bean) {
  37. if (bean?.status.value == TalkStatus.analysisSuccess) {
  38. _talkController.refreshAgendaAllData();
  39. requestMineTodoData();
  40. }
  41. }
  42. void requestMineTodoData() {
  43. String? id = _talkController.talkBean.value?.id;
  44. if (id == null) {
  45. return;
  46. }
  47. agendaRepository.agendaListMine(id).then((data) {
  48. agendaMineList.value = data.list ?? [];
  49. });
  50. }
  51. void agendaTodo(Agenda? agenda) {
  52. if (agenda == null) {
  53. return;
  54. }
  55. bool isSetTodo = !agenda.todo.value;
  56. agendaRepository.agendaTodo(agenda.id, isSetTodo).then((value) {
  57. agenda.todo.value = isSetTodo;
  58. requestMineTodoData();
  59. }).catchError((error) {
  60. ErrorHandler.toastError(error);
  61. });
  62. }
  63. void onClickThinking(Agenda agenda) {
  64. TalkBean? bean = talkBean.value;
  65. if (bean != null) {
  66. ChatPage.startByTalk(bean, agenda: agenda);
  67. } else {
  68. ChatPage.start();
  69. }
  70. }
  71. void showAddAgendaDialog(BuildContext context) {
  72. _talkController.showSingleAddAgendaDialog(context);
  73. }
  74. void removeTalkAgenda(List<Agenda>? list, Agenda agenda) {
  75. _talkController.removeTalkAgenda(list, agenda);
  76. }
  77. @override
  78. void onClose() {
  79. super.onClose();
  80. _talkBeanListener?.cancel();
  81. eventBus.off(refreshTalkMineTask);
  82. }
  83. }