Browse Source

[feat]亲密度分析,文件上传,增加上传失败的回调

hezihao 7 months ago
parent
commit
b397418d45

+ 2 - 0
assets/string/base/string.xml

@@ -264,6 +264,8 @@
     <string name="intimacy_analyse_upload_fail">上传失败</string>
     <string name="intimacy_analyse_upload_fail">上传失败</string>
     <string name="intimacy_analyse_uploading">上传中</string>
     <string name="intimacy_analyse_uploading">上传中</string>
 
 
+    <string name="intimacy_analyse_upload_fail_please_retry">上传失败,请重试</string>
+
     <string name="intimacy_analyse_step">STEP%s</string>
     <string name="intimacy_analyse_step">STEP%s</string>
 
 
     <string name="intimacy_analyse_step_title_select_image">选择你的图片</string>
     <string name="intimacy_analyse_step_title_select_image">选择你的图片</string>

+ 0 - 10
lib/data/repository/file_upload_repository.dart

@@ -1,9 +1,6 @@
 import 'dart:io';
 import 'dart:io';
 
 
-import 'package:dio/dio.dart';
 import 'package:injectable/injectable.dart';
 import 'package:injectable/injectable.dart';
-import 'package:keyboard/utils/file_util.dart';
-
 import '../../utils/http_handler.dart';
 import '../../utils/http_handler.dart';
 import '../api/atmob_file_api.dart';
 import '../api/atmob_file_api.dart';
 import '../api/request/upload_request.dart';
 import '../api/request/upload_request.dart';
@@ -21,13 +18,6 @@ class FileUploadRepository {
 
 
   /// 上传图片
   /// 上传图片
   Future<UploadResultBean> uploadImage({required File file}) async {
   Future<UploadResultBean> uploadImage({required File file}) async {
-    // 包装为 MultipartFile
-    // MultipartFile multipartFile = await MultipartFile.fromFile(
-    //   // 文件路径
-    //   file.path,
-    //   // 文件名
-    //   filename: FileUtil.getFileName(file)
-    // );
     return atmobFileApi
     return atmobFileApi
         .uploadImage(UploadRequest(file: file))
         .uploadImage(UploadRequest(file: file))
         .then(HttpHandler.handle(false));
         .then(HttpHandler.handle(false));

+ 7 - 1
lib/module/intimacy_analyse/intimacy_analyse_upload/intimacy_analyse_upload_controller.dart

@@ -8,6 +8,7 @@ import 'package:keyboard/data/api/request/intimacy_analyze_request.dart';
 import 'package:keyboard/data/bean/upload_info.dart';
 import 'package:keyboard/data/bean/upload_info.dart';
 import 'package:keyboard/data/repository/account_repository.dart';
 import 'package:keyboard/data/repository/account_repository.dart';
 import 'package:keyboard/resource/string.gen.dart';
 import 'package:keyboard/resource/string.gen.dart';
+import 'package:keyboard/utils/error_handler.dart';
 import 'package:keyboard/utils/toast_util.dart';
 import 'package:keyboard/utils/toast_util.dart';
 import 'package:keyboard/utils/upload/upload_scene_type.dart';
 import 'package:keyboard/utils/upload/upload_scene_type.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
@@ -198,6 +199,9 @@ class IntimacyAnalyseUploadController extends BaseController {
             // 上传信息更新时回调,更新UI
             // 上传信息更新时回调,更新UI
             _updateUploadInfo(uploadInfo);
             _updateUploadInfo(uploadInfo);
           },
           },
+          onUploadFailCallback: (error) {
+            ErrorHandler.toastError(error);
+          },
         ),
         ),
       );
       );
       uploadInfoList.refresh();
       uploadInfoList.refresh();
@@ -270,7 +274,9 @@ class IntimacyAnalyseUploadController extends BaseController {
       } else {
       } else {
         // 已经有一个,在原来的基础上,添加1个
         // 已经有一个,在原来的基础上,添加1个
         OptionSelectConfig oldConfig = directionOptionSelectConfigList[0];
         OptionSelectConfig oldConfig = directionOptionSelectConfigList[0];
-        oldConfig.options.add(OptionSelectItem(customDirection, customDirection));
+        oldConfig.options.add(
+          OptionSelectItem(customDirection, customDirection),
+        );
       }
       }
       directionOptionSelectConfigList.refresh();
       directionOptionSelectConfigList.refresh();
     });
     });

+ 3 - 0
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_controller.dart

@@ -262,6 +262,9 @@ class ConversationAnalysisController extends BaseController {
             // 上传信息更新时回调,更新UI
             // 上传信息更新时回调,更新UI
             _updateUploadInfo(uploadInfo);
             _updateUploadInfo(uploadInfo);
           },
           },
+          onUploadFailCallback: (error) {
+            ErrorHandler.toastError(error);
+          },
         ),
         ),
       );
       );
       uploadInfoList.refresh();
       uploadInfoList.refresh();

+ 3 - 0
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_controller.dart

@@ -289,6 +289,9 @@ class ScanImageReplyController extends BaseController {
           // 上传信息更新时回调,更新UI
           // 上传信息更新时回调,更新UI
           _updateUploadInfo(uploadInfo);
           _updateUploadInfo(uploadInfo);
         },
         },
+        onUploadFailCallback: (error) {
+          ErrorHandler.toastError(error);
+        },
       );
       );
     }
     }
   }
   }

+ 2 - 0
lib/resource/string.gen.dart

@@ -192,6 +192,7 @@ class StringName {
   static final String intimacyAnalyseUploadLimitTip = 'intimacy_analyse_upload_limit_tip'.tr; // 还可上传%s张
   static final String intimacyAnalyseUploadLimitTip = 'intimacy_analyse_upload_limit_tip'.tr; // 还可上传%s张
   static final String intimacyAnalyseUploadFail = 'intimacy_analyse_upload_fail'.tr; // 上传失败
   static final String intimacyAnalyseUploadFail = 'intimacy_analyse_upload_fail'.tr; // 上传失败
   static final String intimacyAnalyseUploading = 'intimacy_analyse_uploading'.tr; // 上传中
   static final String intimacyAnalyseUploading = 'intimacy_analyse_uploading'.tr; // 上传中
+  static final String intimacyAnalyseUploadFailPleaseRetry = 'intimacy_analyse_upload_fail_please_retry'.tr; // 上传失败,请重试
   static final String intimacyAnalyseStep = 'intimacy_analyse_step'.tr; // STEP%s
   static final String intimacyAnalyseStep = 'intimacy_analyse_step'.tr; // STEP%s
   static final String intimacyAnalyseStepTitleSelectImage = 'intimacy_analyse_step_title_select_image'.tr; // 选择你的图片
   static final String intimacyAnalyseStepTitleSelectImage = 'intimacy_analyse_step_title_select_image'.tr; // 选择你的图片
   static final String intimacyAnalyseStepTitleSelectPredictionDirection = 'intimacy_analyse_step_title_select_prediction_direction'.tr; // 选择预测方向
   static final String intimacyAnalyseStepTitleSelectPredictionDirection = 'intimacy_analyse_step_title_select_prediction_direction'.tr; // 选择预测方向
@@ -466,6 +467,7 @@ class StringMultiSource {
       'intimacy_analyse_upload_limit_tip': '还可上传%s张',
       'intimacy_analyse_upload_limit_tip': '还可上传%s张',
       'intimacy_analyse_upload_fail': '上传失败',
       'intimacy_analyse_upload_fail': '上传失败',
       'intimacy_analyse_uploading': '上传中',
       'intimacy_analyse_uploading': '上传中',
+      'intimacy_analyse_upload_fail_please_retry': '上传失败,请重试',
       'intimacy_analyse_step': 'STEP%s',
       'intimacy_analyse_step': 'STEP%s',
       'intimacy_analyse_step_title_select_image': '选择你的图片',
       'intimacy_analyse_step_title_select_image': '选择你的图片',
       'intimacy_analyse_step_title_select_prediction_direction': '选择预测方向',
       'intimacy_analyse_step_title_select_prediction_direction': '选择预测方向',

+ 15 - 4
lib/utils/upload/upload_file_manager.dart

@@ -1,5 +1,4 @@
 import 'dart:io';
 import 'dart:io';
-
 import 'package:injectable/injectable.dart';
 import 'package:injectable/injectable.dart';
 import 'package:keyboard/utils/atmob_log.dart';
 import 'package:keyboard/utils/atmob_log.dart';
 import 'package:keyboard/utils/upload/upload_scene_type.dart';
 import 'package:keyboard/utils/upload/upload_scene_type.dart';
@@ -14,6 +13,9 @@ import '../file_util.dart';
 /// 上传信息更新回调
 /// 上传信息更新回调
 typedef OnUploadInfoUpdateCallback = void Function(UploadInfo uploadInfo);
 typedef OnUploadInfoUpdateCallback = void Function(UploadInfo uploadInfo);
 
 
+/// 上传失败时回调
+typedef OnUploadFailCallback = void Function(dynamic error);
+
 /// 文件上传管理器
 /// 文件上传管理器
 @lazySingleton
 @lazySingleton
 class UploadFileManager {
 class UploadFileManager {
@@ -32,6 +34,7 @@ class UploadFileManager {
     required UploadSceneType sceneType,
     required UploadSceneType sceneType,
     required File file,
     required File file,
     OnUploadInfoUpdateCallback? onUploadInfoUpdateCallback,
     OnUploadInfoUpdateCallback? onUploadInfoUpdateCallback,
+    OnUploadFailCallback? onUploadFailCallback,
   }) {
   }) {
     // 创建一个上传记录,添加到队列中
     // 创建一个上传记录,添加到队列中
     UploadInfo uploadInfo = UploadInfo(
     UploadInfo uploadInfo = UploadInfo(
@@ -49,7 +52,11 @@ class UploadFileManager {
     _uploadInfoQueue.add(uploadInfo);
     _uploadInfoQueue.add(uploadInfo);
 
 
     // 执行上传任务
     // 执行上传任务
-    _doUploadFile(uploadInfo, onUploadInfoUpdateCallback);
+    _doUploadFile(
+      uploadInfo,
+      onUploadInfoUpdateCallback: onUploadInfoUpdateCallback,
+      onUploadFailCallback: onUploadFailCallback,
+    );
 
 
     return uploadInfo;
     return uploadInfo;
   }
   }
@@ -85,9 +92,10 @@ class UploadFileManager {
 
 
   /// 执行,上传文件
   /// 执行,上传文件
   void _doUploadFile(
   void _doUploadFile(
-    UploadInfo uploadInfo,
+    UploadInfo uploadInfo, {
     OnUploadInfoUpdateCallback? onUploadInfoUpdateCallback,
     OnUploadInfoUpdateCallback? onUploadInfoUpdateCallback,
-  ) {
+    OnUploadFailCallback? onUploadFailCallback,
+  }) {
     File file = File(uploadInfo.filePath ?? "");
     File file = File(uploadInfo.filePath ?? "");
     fileUploadRepository
     fileUploadRepository
         .uploadImage(file: file)
         .uploadImage(file: file)
@@ -114,6 +122,9 @@ class UploadFileManager {
           if (onUploadInfoUpdateCallback != null) {
           if (onUploadInfoUpdateCallback != null) {
             onUploadInfoUpdateCallback(uploadInfo);
             onUploadInfoUpdateCallback(uploadInfo);
           }
           }
+          if (onUploadFailCallback != null) {
+            onUploadFailCallback(error);
+          }
         });
         });
   }
   }
 }
 }