controller.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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:get/get.dart';
  8. import '../../../data/bean/agenda_list_all_bean.dart';
  9. import '../../../data/bean/talks.dart';
  10. import '../controller.dart';
  11. class TodoController extends BaseController {
  12. final TalkController _talkController = Get.find();
  13. StreamSubscription? _talkBeanListener;
  14. final agendaMineList = <Agenda>[].obs;
  15. final mineAgendaIsExpanded = false.obs;
  16. RxList<AgendaListAllBean> get agendaAllList => _talkController.agendaAllList;
  17. Rxn<TalkBean> get talkBean => _talkController.talkBean;
  18. @override
  19. void onReady() {
  20. super.onReady();
  21. _talkBeanListener = _talkController.talkBean.listen((bean) {
  22. _dealTalkUpdate(bean);
  23. });
  24. _dealTalkUpdate(_talkController.talkBean.value);
  25. }
  26. void _dealTalkUpdate(TalkBean? bean) {
  27. if (bean?.status.value == TalkStatus.analysisSuccess) {
  28. _talkController.refreshAgendaAllData();
  29. requestMineTodoData();
  30. }
  31. }
  32. void requestMineTodoData() {
  33. String? id = _talkController.talkBean.value?.id;
  34. if (id == null) {
  35. return;
  36. }
  37. agendaRepository.agendaListMine(id).then((data) {
  38. agendaMineList.value = data.list ?? [];
  39. });
  40. }
  41. @override
  42. void onClose() {
  43. super.onClose();
  44. _talkBeanListener?.cancel();
  45. }
  46. void agendaTodo(Agenda? agenda) {
  47. if (agenda == null) {
  48. return;
  49. }
  50. bool isSetTodo = !agenda.todo.value;
  51. agendaRepository.agendaTodo(agenda.id, isSetTodo).then((value) {
  52. agenda.todo.value = isSetTodo;
  53. requestMineTodoData();
  54. }).catchError((error) {
  55. ErrorHandler.toastError(error);
  56. });
  57. }
  58. void onClickThinking(Agenda agenda) {
  59. TalkBean? bean = talkBean.value;
  60. if (bean != null) {
  61. ChatPage.startByTalk(bean, agenda: agenda);
  62. } else {
  63. ChatPage.start();
  64. }
  65. }
  66. }