bug修复

This commit is contained in:
2025-12-14 12:19:47 +08:00
parent 5eb361f44d
commit 1d7be69b87
5 changed files with 545 additions and 10 deletions

View File

@@ -171,20 +171,23 @@ export function useWebRTC(
const roomId = getSafeRoomId(currentReceiverUserId)
if (!roomId) return
// 通话类型说明
const callTypeText = call.type === 'video' ? '[视频通话]' : '[语音通话]'
// 根据原因生成系统消息内容
let content = ''
switch (reason) {
case 'connected':
content = `通话时长 ${formatDuration(call.duration)}`
content = `${callTypeText} 通话时长 ${formatDuration(call.duration)}`
break
case 'cancelled':
content = '已取消'
content = `${callTypeText} 已取消`
break
case 'rejected':
content = '对方未接听'
content = `${callTypeText} 对方未接听`
break
case 'busy':
content = '对方忙'
content = `${callTypeText} 对方忙`
break
}
@@ -402,17 +405,15 @@ export function useWebRTC(
function endCall() {
stopRingtone()
// 主动挂断时发送通话结束系统消息
// 只有发起方发送通话结束系统消息,避免重复
if (isCaller.value) {
if (call.status === 'outgoing') {
sendSummaryMessage('cancelled') // 呼出状态主动取消
} else if (call.status === 'connected') {
sendSummaryMessage('connected') // 通话中主动挂断
}
} else if (call.status === 'connected') {
// 被叫方在通话中挂断也发送消息
sendSummaryMessage('connected')
}
// 被叫方不发送消息,由发起方统一发送
sendSignal('hangup')
closeCall()
}