Browse Source

[feat]分析亲密度,处理图片还在上传中,就点击操作按钮,导致没有传到图片地址给接口的问题

hezihao 7 tháng trước cách đây
mục cha
commit
a4a1a21d1d

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

@@ -355,6 +355,8 @@
     <string name="intimacy_generate_character">生成定制人设</string>
     <string name="intimacy_generate_character_add_success">添加成功</string>
 
+    <string name="uploading_tip">正在上传中,请稍后</string>
+
     <string name="preview">预览</string>
 
     <string name="retry">再试试</string>

+ 20 - 0
lib/module/intimacy_analyse/intimacy_analyse_upload/intimacy_analyse_upload_controller.dart

@@ -11,6 +11,7 @@ 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/upload/upload_scene_type.dart';
+import 'package:keyboard/utils/upload/upload_state.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
 import '../../../data/api/request/intimacy_generate_character_request.dart';
 import '../../../data/api/response/intimacy_analyze_config_response.dart';
@@ -205,6 +206,19 @@ class IntimacyAnalyseUploadController extends BaseController {
     }
   }
 
+  /// 是否正在上传
+  bool _isUploading() {
+    var list = uploadInfoList.toList();
+
+    for (var item in list) {
+      if (item.uploadState == UploadState.uploading.state) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
   /// 更新上传信息
   void _updateUploadInfo(UploadInfo uploadInfo) {
     // 更新上传信息
@@ -316,6 +330,12 @@ class IntimacyAnalyseUploadController extends BaseController {
       }
     }
 
+    // 正在上传,禁止操作
+    if (_isUploading()) {
+      ToastUtil.show(StringName.uploadingTip);
+      return;
+    }
+
     // 上传的图片后端地址
     List<String> imageList =
         uploadInfoList.map((item) {

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

@@ -26,6 +26,7 @@ import '../../../../utils/sse_parse_util.dart';
 import '../../../../utils/toast_util.dart';
 import '../../../../utils/upload/upload_file_manager.dart';
 import '../../../../utils/upload/upload_scene_type.dart';
+import '../../../../utils/upload/upload_state.dart';
 import '../../../store/store_page.dart';
 
 /// 对话分析Controller
@@ -164,6 +165,12 @@ class ConversationAnalysisController extends BaseController {
       return;
     }
 
+    // 上传中,禁止处理
+    if (_isUploading()) {
+      ToastUtil.show(StringName.uploadingTip);
+      return;
+    }
+
     // 上传的图片后端地址
     List<String> imageList =
         uploadInfoList.map((item) {
@@ -251,6 +258,19 @@ class ConversationAnalysisController extends BaseController {
     uploadInfoList.refresh();
   }
 
+  /// 是否正在上传
+  bool _isUploading() {
+    var list = uploadInfoList.toList();
+
+    for (var item in list) {
+      if (item.uploadState == UploadState.uploading.state) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
   /// 处理文件上传
   void _handleSelectedAssetUpload(List<AssetEntity> selectedAssetList) async {
     for (var entity in selectedAssetList) {

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

@@ -26,6 +26,7 @@ import '../../../../utils/intimacy_analyze_config_helper.dart';
 import '../../../../utils/sse_parse_util.dart';
 import '../../../../utils/upload/upload_file_manager.dart';
 import '../../../../utils/upload/upload_scene_type.dart';
+import '../../../../utils/upload/upload_state.dart';
 import '../../../store/store_page.dart';
 
 /// 识图回复Controller
@@ -189,6 +190,12 @@ class ScanImageReplyController extends BaseController {
       return;
     }
 
+    // 上传中,禁止处理
+    if (_isUploading()) {
+      ToastUtil.show(StringName.uploadingTip);
+      return;
+    }
+
     // 上传的图片后端地址
     List<String> imageList = [uploadInfo.value?.fileBackendPath ?? ""];
     // 选择的回复语气
@@ -314,4 +321,9 @@ class ScanImageReplyController extends BaseController {
     uploadInfo.value = info;
     uploadInfo.refresh();
   }
+
+  /// 是否正在上传
+  bool _isUploading() {
+    return uploadInfo.value?.uploadState == UploadState.uploading.state;
+  }
 }

+ 4 - 2
lib/module/intimacy_analyse/widget/intimacy_analyse_report_widget.dart

@@ -191,7 +191,7 @@ class ExistReportCardWidget extends StatelessWidget {
         // 左对齐
         mainAxisAlignment: MainAxisAlignment.start,
         children: [
-          // 图
+          // 图
           Assets.images.iconIntimacyAnalyseReportOverviewLove.image(
             height: 22.w,
             width: 22.w,
@@ -206,7 +206,9 @@ class ExistReportCardWidget extends StatelessWidget {
                   // 数值
                   Text(
                     value,
+                    maxLines: 1,
                     style: TextStyle(
+                      overflow: TextOverflow.ellipsis,
                       color: ColorName.black80,
                       fontSize: 20.sp,
                       fontWeight: FontWeight.w700,
@@ -254,7 +256,7 @@ class ExistReportCardWidget extends StatelessWidget {
           ),
           SizedBox(width: 14.w),
           Column(
-            crossAxisAlignment: CrossAxisAlignment.start,
+            crossAxisAlignment: CrossAxisAlignment.end,
             children: [
               // 数值
               Text(

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

@@ -255,6 +255,7 @@ class StringName {
   static final String intimacyGenerateCharacterAddKeyboard = 'intimacy_generate_character_add_keyboard'.tr; // 添加到键盘
   static final String intimacyGenerateCharacter = 'intimacy_generate_character'.tr; // 生成定制人设
   static final String intimacyGenerateCharacterAddSuccess = 'intimacy_generate_character_add_success'.tr; // 添加成功
+  static final String uploadingTip = 'uploading_tip'.tr; // 正在上传中,请稍后
   static final String preview = 'preview'.tr; // 预览
   static final String retry = 'retry'.tr; // 再试试
   static final String nextStep = 'next_step'.tr; // 下一步
@@ -569,6 +570,7 @@ class StringMultiSource {
       'intimacy_generate_character_add_keyboard': '添加到键盘',
       'intimacy_generate_character': '生成定制人设',
       'intimacy_generate_character_add_success': '添加成功',
+      'uploading_tip': '正在上传中,请稍后',
       'preview': '预览',
       'retry': '再试试',
       'next_step': '下一步',