controller.dart 3.4 KB

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