import 'dart:io'; import 'package:electronic_assistant/data/api/atmob_api.dart'; import 'package:electronic_assistant/data/api/atmob_file_api.dart'; import 'package:electronic_assistant/data/api/request/talk_create_request.dart'; import 'package:electronic_assistant/data/api/request/talk_delete_request.dart'; import 'package:electronic_assistant/data/api/request/talk_file_request.dart'; import 'package:get/get.dart'; import '../../utils/http_handler.dart'; import '../api/request/talk_generate_request.dart'; import '../api/request/talk_paginate_request.dart'; import '../api/request/talk_rename_request.dart'; import '../api/request/talk_request.dart'; import '../api/response/talk_check_electric_response.dart'; import '../api/response/talk_info_response.dart'; import '../api/response/talk_paginate_response.dart'; import '../bean/talk_original.dart'; import '../bean/talks.dart'; import 'account_repository.dart'; class TalkRepository { TalkRepository._(); final Set _uploadingTalkIds = {}; final _talkList = RxList(); RxList get talkList => _talkList; bool isUploadingTalk(String talkId) { return _uploadingTalkIds.contains(talkId); } void renovateTalkData(TalkBean talkInfo) { for (int i = 0; i < _talkList.length; i++) { if (_talkList[i].id == talkInfo.id) { _talkList[i].updateBean(talkInfo); break; } } } void setTalkList(List list) { _talkList.assignAll(list); } void addNewTalkData(TalkBean talkInfo) { _talkList.insert(0, talkInfo); } clearTalkList() { _talkList.clear(); } Future requestHomeTalkData( {int pageSize = 10, int? sortType = 1}) { return requestTalkPagePaginate(1, pageSize, sortType: sortType); } Future requestTalkPagePaginate(int page, int pageSize, {String? searchKeyword, int? sortType = 1}) { return talkPagePaginate(page, pageSize, searchKeyword: searchKeyword, sortType: sortType) .then((response) { if (page == 1) { _talkList.clear(); } if (response.list != null) { _talkList.addAll(response.list!); } // TalkBean bean = _talkList[0]; // Future.delayed(Duration(seconds: 1),(){ // bean.title.value = '1112312'; // bean.createTime = '222222'; // }); return response; }); } ///sortType 1:按创建时间倒序 2:按更新时间倒序 Future talkPagePaginate(int page, int pageSize, {String? searchKeyword, int? sortType = 1}) { return atmobApi .talkPagePaginate(TalkPaginateRequest(page, pageSize, searchKeyword: searchKeyword, sortType: sortType)) .then(HttpHandler.handle(false)); } Future> talkOriginal(String? talkId) { return atmobApi .talkOriginal( TalkRequest(talkId, isExample: !accountRepository.isLogin.value)) .then(HttpHandler.handle(false)) .then((data) { if (data.list != null) { return data.list!; } else { return []; } }); } // duration 音频时长,单位为秒 Future checkElectric(double duration) { return atmobApi .checkElectric(TalkGenerateRequest(duration)) .then(HttpHandler.handle(false)); } Future talkInfo(String id) { return atmobApi .talkInfo(TalkRequest(id, isExample: !accountRepository.isLogin.value)) .then(HttpHandler.handle(true)); } Future talkRename(String? id, String? title) { return atmobApi .talkRename(TalkRenameRequest(id, title)) .then(HttpHandler.handle(true)); } Future talkDelete(String? id) { return atmobApi .talkDelete(TalkDeleteRequest(id)) .then(HttpHandler.handle(true)); } Future talkCreate(String requestId, int duration) { return atmobApi .talkCreate(TalkCreateRequest(duration, requestId)) .then(HttpHandler.handle(true)); } Future uploadTalkFile(String talkId, double duration, File file) { _uploadingTalkIds.add(talkId); return atmobFileApi .uploadTalkFile(TalkFileRequest(talkId, duration, file: file).toJson()) .then(HttpHandler.handle(true)) .then((response) { _uploadingTalkIds.remove(talkId); return response.taskId; }); } } final talkRepository = TalkRepository._();