controller.dart 2.0 KB

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