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