Browse Source

feat(call): 优化通话记录显示和礼物赠送功能

- 添加通话信息日志记录便于调试
- 简化通话状态显示文本,统一未接听、已取消、已拒绝的提示
- 集成TDesign组件库和直播充值弹窗组件
- 实现礼物赠送失败时的玫瑰不足提示和充值弹窗功能
- 添加礼物赠送失败的错误处理和用户反馈机制
master
Jolie 3 months ago
parent
commit
832faafd6f
2 changed files with 25 additions and 3 deletions
  1. 21
      lib/controller/discover/room_controller.dart
  2. 7
      lib/widget/message/call_item.dart

21
lib/controller/discover/room_controller.dart

@ -15,11 +15,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:tdesign_flutter/tdesign_flutter.dart';
import '../../model/live/live_chat_message.dart';
import '../../pages/discover/live_end_page.dart';
import '../../pages/mine/real_name_page.dart';
import '../../pages/setting/match_spread_page.dart';
import '../../widget/live/live_recharge_popup.dart';
import 'svga_player_manager.dart';
//
@ -418,6 +420,25 @@ class RoomController extends GetxController with WidgetsBindingObserver {
);
return;
}
if (response.data.isSuccess && !response.data.data['success']) {
final code = response.data.data['code'];
if (code == 'E0002') {
// toast
SmartDialog.showToast('玫瑰不足请充值');
Get.log('❌ 送礼失败: ${response.data.data}');
// 使 addPostFrameCallback toast
WidgetsBinding.instance.addPostFrameCallback((_) {
SmartDialog.show(
alignment: Alignment.bottomCenter,
maskColor: Colors.black.withOpacity(0.5),
builder: (_) => const LiveRechargePopup(),
);
});
} else {
SmartDialog.showToast('发送礼物失败');
}
return;
}
//
final svgaManager = SvgaPlayerManager.instance;

7
lib/widget/message/call_item.dart

@ -64,6 +64,7 @@ class CallItem extends StatelessWidget {
///
CallType? _getCallType() {
final callInfo = _parseCallInfo();
Get.log('通话信息: $callInfo');
if (callInfo != null) {
final callTypeStr = callInfo['callType'] as String?;
if (callTypeStr == 'voice') {
@ -145,11 +146,11 @@ class CallItem extends StatelessWidget {
//
return _formatDuration(duration);
} else if (callStatus == CallStatus.missed) {
return callType == CallType.video ? '未接听视频通话' : '未接听语音通话';
return '未接听';
} else if (callStatus == CallStatus.cancelled) {
return callType == CallType.video ? '已取消视频通话' : '已取消语音通话';
return '已取消';
} else if (callStatus == CallStatus.rejected) {
return callType == CallType.video ? '已拒绝视频通话' : '已拒绝语音通话';
return '已拒绝';
} else {
return callType == CallType.video ? '视频通话' : '语音通话';
}

Loading…
Cancel
Save