controller.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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/consts/event_report_id.dart';
  5. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  6. import 'package:electronic_assistant/module/chat/view.dart';
  7. import 'package:electronic_assistant/utils/error_handler.dart';
  8. import 'package:flutter/cupertino.dart';
  9. import 'package:get/get.dart';
  10. import '../../../data/bean/agenda_list_all_bean.dart';
  11. import '../../../data/bean/talks.dart';
  12. import '../../../utils/event_bus.dart';
  13. import '../controller.dart';
  14. class TodoController extends BaseController {
  15. static String refreshTalkMineTask = "refreshTalkMineTask";
  16. final String? talkId;
  17. StreamSubscription? _talkBeanListener;
  18. final agendaMineList = <Agenda>[].obs;
  19. final mineAgendaIsExpanded = true.obs;
  20. TodoController(this.talkId);
  21. get _talkController => Get.find<TalkController>(tag: talkId);
  22. RxList<AgendaListAllBean> get agendaAllList => _talkController.agendaAllList;
  23. Rxn<TalkBean> get talkBean => _talkController.talkBean;
  24. bool get isEditModel => _talkController.isEditModelRx.value;
  25. TalkController get talkController => _talkController;
  26. @override
  27. void onReady() {
  28. super.onReady();
  29. _talkBeanListener = _talkController.talkBean.listen((bean) {
  30. _dealTalkUpdate(bean);
  31. });
  32. _dealTalkUpdate(_talkController.talkBean.value);
  33. _eventRefresh();
  34. }
  35. void _eventRefresh() {
  36. eventBus.on(refreshTalkMineTask, (data) {
  37. requestMineTodoData();
  38. });
  39. }
  40. void _dealTalkUpdate(TalkBean? bean) {
  41. if (bean?.status.value == TalkStatus.analysisSuccess) {
  42. _talkController.refreshAgendaAllData();
  43. requestMineTodoData();
  44. eventReport(EventId.event_101200);
  45. } else if (bean?.status.value == TalkStatus.analysisFail) {
  46. eventReport(EventId.event_101203);
  47. }
  48. }
  49. void eventReport(String eventId, {Map<String, dynamic>? params}) {
  50. _talkController.eventReport(eventId, params: params);
  51. }
  52. void requestMineTodoData() {
  53. String? id = _talkController.talkBean.value?.id;
  54. if (id == null) {
  55. return;
  56. }
  57. agendaRepository.agendaListMine(id).then((data) {
  58. agendaMineList.value = data.list ?? [];
  59. });
  60. }
  61. void agendaTodo(Agenda? agenda) {
  62. if (agenda == null) {
  63. return;
  64. }
  65. if (!agenda.todo.value) {
  66. eventReport(EventId.event_101201);
  67. }
  68. bool isSetTodo = !agenda.todo.value;
  69. agendaRepository.agendaTodo(agenda.id, isSetTodo).then((value) {
  70. agenda.todo.value = isSetTodo;
  71. requestMineTodoData();
  72. }).catchError((error) {
  73. ErrorHandler.toastError(error);
  74. });
  75. }
  76. void onClickThinking(Agenda agenda) async {
  77. if (!await _talkController.checkLogin()) {
  78. return;
  79. }
  80. TalkBean? bean = talkBean.value;
  81. eventReport(EventId.event_101202);
  82. ChatFromType fromType = talkBean.value!.isExample == true
  83. ? ChatFromType.fromTalkExample
  84. : ChatFromType.fromAnalysisBtn;
  85. if (bean != null) {
  86. ChatPage.startByTalk(fromType, bean, agenda: agenda);
  87. } else {
  88. ChatPage.start(fromType);
  89. }
  90. }
  91. void showAddAgendaDialog(BuildContext context) {
  92. _talkController.showSingleAddAgendaDialog(context);
  93. }
  94. void removeTalkAgenda(List<Agenda>? list, Agenda agenda) {
  95. _talkController.removeTalkAgenda(list, agenda);
  96. }
  97. @override
  98. void onClose() {
  99. super.onClose();
  100. _talkBeanListener?.cancel();
  101. eventBus.off(refreshTalkMineTask);
  102. }
  103. }