Browse Source

feat(call): 添加通话等待状态并优化礼物充值流程

- 添加 waitCalling 等待接通通话状态
- 优化聊天控制器中的消息发送成功处理逻辑
- 实现玫瑰不足时自动弹出充值弹框功能
- 集成 tdesign 组件库和直播充值弹窗组件
- 改进礼物发送失败的错误处理和用户反馈机制
master
Jolie 3 months ago
parent
commit
7597e44d81
2 changed files with 27 additions and 13 deletions
  1. 4
      lib/controller/message/call_manager.dart
  2. 36
      lib/controller/message/chat_controller.dart

4
lib/controller/message/call_manager.dart

@ -16,11 +16,11 @@ enum CallType {
/// ///
enum CallStatus { enum CallStatus {
waitCalling, //
calling, // calling, //
missed, // missed, //
cancelled, // cancelled, //
rejected, // rejected, //
connected, //
} }
/// ///
@ -331,7 +331,7 @@ class CallManager extends GetxController {
'call', 'call',
callParams, callParams,
); );
return message != null; return message != null;
} catch (e) { } catch (e) {
print('❌ [CallManager] 发送通话消息失败: $e'); print('❌ [CallManager] 发送通话消息失败: $e');

36
lib/controller/message/chat_controller.dart

@ -1,11 +1,14 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:flutter/material.dart';
import 'package:tdesign_flutter/tdesign_flutter.dart';
import '../../im/im_manager.dart'; import '../../im/im_manager.dart';
import '../../im/chat_presence_manager.dart'; import '../../im/chat_presence_manager.dart';
import '../../model/home/marriage_data.dart'; import '../../model/home/marriage_data.dart';
import '../../model/live/gift_product_model.dart'; import '../../model/live/gift_product_model.dart';
import '../../network/network_service.dart'; import '../../network/network_service.dart';
import '../../widget/live/live_recharge_popup.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'conversation_controller.dart'; import 'conversation_controller.dart';
@ -1080,15 +1083,15 @@ class ChatController extends GetxController {
try { try {
final message = await IMManager.instance.sendCustomMessage(userId, 'call', callParams); final message = await IMManager.instance.sendCustomMessage(userId, 'call', callParams);
if (message != null) { if (message != null) {
//
final index = messages.indexWhere((msg) => msg.msgId == tempMessage.msgId);
if (index != -1) {
//
final index = messages.indexWhere((msg) => msg.msgId == tempMessage.msgId);
if (index != -1) {
messages[index] = message; messages[index] = message;
}
update();
//
_refreshConversationList();
return true;
}
update();
//
_refreshConversationList();
return true;
} else { } else {
// FAIL // FAIL
update(); update();
@ -1743,9 +1746,20 @@ class ChatController extends GetxController {
); );
if (response.data.isSuccess && !response.data.data['success']) { if (response.data.isSuccess && !response.data.data['success']) {
SmartDialog.showToast(
response.data.data['code'] == 'E0002' ? '玫瑰不足请充值' : '发送礼物失败',
);
final code = response.data.data['code'];
if (code == 'E0002') {
// toast
SmartDialog.showToast('玫瑰不足请充值');
SmartDialog.show(
alignment: Alignment.bottomCenter,
maskColor: Get.context != null
? TDTheme.of(Get.context!).fontGyColor2
: Colors.black.withOpacity(0.5),
builder: (_) => const LiveRechargePopup(),
);
} else {
SmartDialog.showToast('发送礼物失败');
}
return false; return false;
} }

Loading…
Cancel
Save