import 'dart:async'; import 'package:electronic_assistant/base/base_controller.dart'; import 'package:electronic_assistant/data/bean/agenda.dart'; import 'package:electronic_assistant/data/repositories/agenda_repository.dart'; import 'package:electronic_assistant/module/chat/view.dart'; import 'package:electronic_assistant/utils/error_handler.dart'; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import '../../../data/bean/agenda_list_all_bean.dart'; import '../../../data/bean/talks.dart'; import '../../../utils/event_bus.dart'; import '../controller.dart'; class TodoController extends BaseController { static String refreshTalkMineTask = "refreshTalkMineTask"; final TalkController _talkController = Get.find(); StreamSubscription? _talkBeanListener; final agendaMineList = [].obs; final mineAgendaIsExpanded = false.obs; RxList get agendaAllList => _talkController.agendaAllList; Rxn get talkBean => _talkController.talkBean; bool get isEditModel => _talkController.isEditModelRx.value; @override void onReady() { super.onReady(); _talkBeanListener = _talkController.talkBean.listen((bean) { _dealTalkUpdate(bean); }); _dealTalkUpdate(_talkController.talkBean.value); _eventRefresh(); } void _eventRefresh() { eventBus.on(refreshTalkMineTask, (data) { requestMineTodoData(); }); } void _dealTalkUpdate(TalkBean? bean) { if (bean?.status.value == TalkStatus.analysisSuccess) { _talkController.refreshAgendaAllData(); requestMineTodoData(); } } void requestMineTodoData() { String? id = _talkController.talkBean.value?.id; if (id == null) { return; } agendaRepository.agendaListMine(id).then((data) { agendaMineList.value = data.list ?? []; }); } void agendaTodo(Agenda? agenda) { if (agenda == null) { return; } bool isSetTodo = !agenda.todo.value; agendaRepository.agendaTodo(agenda.id, isSetTodo).then((value) { agenda.todo.value = isSetTodo; requestMineTodoData(); }).catchError((error) { ErrorHandler.toastError(error); }); } void onClickThinking(Agenda agenda) { TalkBean? bean = talkBean.value; if (bean != null) { ChatPage.startByTalk(bean, agenda: agenda); } else { ChatPage.start(); } } void showAddAgendaDialog(BuildContext context) { _talkController.showSingleAddAgendaDialog(context); } void removeTalkAgenda(List? list, Agenda agenda) { _talkController.removeTalkAgenda(list, agenda); } @override void onClose() { super.onClose(); _talkBeanListener?.cancel(); eventBus.off(refreshTalkMineTask); } }