Browse Source

[fix]亲密度分析,处理发送的获取配置请求还没回来时,就进入分析页面,选项列表没有数据渲染的问题

hezihao 7 months ago
parent
commit
9877d7d67c

+ 28 - 11
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_controller.dart

@@ -12,6 +12,7 @@ import 'package:keyboard/resource/string.gen.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
 
 import '../../../../data/api/request/intimacy_reply_chat_request.dart';
+import '../../../../data/api/response/intimacy_analyze_chat_config_response.dart';
 import '../../../../data/api/response/intimacy_chat_analyze_response.dart';
 import '../../../../data/bean/member_info.dart';
 import '../../../../data/bean/option_select_config.dart';
@@ -84,6 +85,30 @@ class ConversationAnalysisController extends BaseController {
   );
 
   @override
+  void onInit() {
+    super.onInit();
+    // 监听配置更新,刷新选项列表
+    AtmobLog.d(_tag, "监听 <对话分析> 配置更新,刷新选项列表");
+    ever(intimacyAnalyzeConfigHelper.intimacyAnalyzeChatConfig, (
+      IntimacyAnalyzeChatConfigResponse? config,
+    ) {
+      if (config != null) {
+        _initOptionSelectConfigList(config);
+      }
+    });
+  }
+
+  @override
+  void onReady() {
+    super.onReady();
+    // 初次加载配置
+    var config = intimacyAnalyzeConfigHelper.intimacyAnalyzeChatConfig.value;
+    if (config != null) {
+      _initOptionSelectConfigList(config);
+    }
+  }
+
+  @override
   void onClose() {
     // 删除文件上传记录
     uploadFileManager.deleteUploadInfoBySceneType(uploadSceneType);
@@ -92,19 +117,12 @@ class ConversationAnalysisController extends BaseController {
     super.onClose();
   }
 
-  @override
-  void onReady() {
-    super.onReady();
-    _initOptionSelectConfigList();
-  }
-
   /// 初始化选项列表
-  void _initOptionSelectConfigList() {
+  void _initOptionSelectConfigList(IntimacyAnalyzeChatConfigResponse config) {
     optionSelectConfigList.clear();
 
     // 对于Ta
-    var forTaConfig =
-        intimacyAnalyzeConfigHelper.intimacyAnalyzeChatConfig.value?.forTa;
+    var forTaConfig = config.forTa;
     if (forTaConfig != null && forTaConfig.isNotEmpty) {
       var itemList =
           forTaConfig.map((item) {
@@ -116,8 +134,7 @@ class ConversationAnalysisController extends BaseController {
       );
     }
     // 对于我
-    var forMeConfig =
-        intimacyAnalyzeConfigHelper.intimacyAnalyzeChatConfig.value?.forMe;
+    var forMeConfig = config.forMe;
     if (forMeConfig != null) {
       var itemList =
           forMeConfig.map((item) {

+ 29 - 10
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_controller.dart

@@ -4,6 +4,7 @@ import 'dart:io';
 
 import 'package:flutter/cupertino.dart';
 import 'package:get/get_rx/src/rx_types/rx_types.dart';
+import 'package:get/get_rx/src/rx_workers/rx_workers.dart';
 import 'package:injectable/injectable.dart';
 import 'package:keyboard/base/base_controller.dart';
 import 'package:keyboard/data/bean/upload_info.dart';
@@ -13,6 +14,7 @@ import 'package:keyboard/utils/toast_util.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
 
 import '../../../../data/api/request/intimacy_reply_analyze_request.dart';
+import '../../../../data/api/response/intimacy_analyze_reply_config_response.dart';
 import '../../../../data/api/response/intimacy_reply_analyze_response.dart';
 import '../../../../data/bean/option_select_config.dart';
 import '../../../../data/bean/option_select_item.dart';
@@ -84,18 +86,37 @@ class ScanImageReplyController extends BaseController {
   );
 
   @override
+  void onInit() {
+    super.onInit();
+    // 监听配置更新,刷新选项列表
+    AtmobLog.d(_tag, "监听 <识图回复> 配置更新,刷新选项列表");
+    ever(intimacyAnalyzeConfigHelper.intimacyAnalyzeReplyConfig, (
+      IntimacyAnalyzeReplyConfigResponse? config,
+    ) {
+      if (config != null) {
+        _initReplyToneOptionSelectConfigList(config);
+        _initReplyModeList(config);
+      }
+    });
+  }
+
+  @override
   void onReady() {
     super.onReady();
-    _initReplyToneOptionSelectConfigList();
-    _initReplyModeList();
+    // 初次加载配置
+    var config = intimacyAnalyzeConfigHelper.intimacyAnalyzeReplyConfig.value;
+    if (config != null) {
+      _initReplyToneOptionSelectConfigList(config);
+      _initReplyModeList(config);
+    }
   }
 
   /// 初始化回复语气列表
-  void _initReplyToneOptionSelectConfigList() {
+  void _initReplyToneOptionSelectConfigList(
+    IntimacyAnalyzeReplyConfigResponse config,
+  ) {
     // 语气列表
-    var toneList =
-        intimacyAnalyzeConfigHelper.intimacyAnalyzeReplyConfig.value?.tones ??
-        [];
+    var toneList = config.tones ?? [];
     if (toneList.isNotEmpty) {
       var newList =
           toneList.map((item) {
@@ -115,10 +136,8 @@ class ScanImageReplyController extends BaseController {
   }
 
   /// 初始化回复模式
-  void _initReplyModeList() {
-    var modeList =
-        intimacyAnalyzeConfigHelper.intimacyAnalyzeReplyConfig.value?.modes ??
-        [];
+  void _initReplyModeList(IntimacyAnalyzeReplyConfigResponse config) {
+    var modeList = config.modes;
     replyModelList.addAll(modeList);
     replyModelList.refresh();
 

+ 1 - 1
lib/utils/intimacy_analyze_config_helper.dart

@@ -20,7 +20,7 @@ class IntimacyAnalyzeConfigHelper {
   Rxn<IntimacyAnalyzeChatConfigResponse> get intimacyAnalyzeChatConfig =>
       intimacyAnalyzeRepository.intimacyAnalyzeChatConfig;
 
-  /// 对话分析配置
+  /// 识图回复配置
   Rxn<IntimacyAnalyzeReplyConfigResponse> get intimacyAnalyzeReplyConfig =>
       intimacyAnalyzeRepository.intimacyAnalyzeReplyConfig;