controller.dart 2.2 KB

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