controller.dart 3.4 KB

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