import 'dart:io'; import 'package:electronic_assistant/data/api/atmob_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'; class TalkRepository { TalkRepository._(); final RxList> _talkList = >[].obs; RxList> get talkList => _talkList; void renovateTalkData(TalkBean talkInfo) { for (int i = 0; i < _talkList.length; i++) { if (_talkList[i].value?.id == talkInfo.id) { _talkList[i].value = talkInfo; break; } } } void addNewTalkData(TalkBean talkInfo) { _talkList.insert(0, Rxn(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!.map((e) => Rxn(e)).toList()); } 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)) .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)).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) { return atmobApi .uploadTalkFile(TalkFileRequest(talkId, duration, file: file).toJson()) .then(HttpHandler.handle(true)) .then((response) { return response.taskId; }); } } final talkRepository = TalkRepository._();