diff --git a/src/api/ngcp-call.js b/src/api/ngcp-call.js index 5cf901b8..05bc3d36 100644 --- a/src/api/ngcp-call.js +++ b/src/api/ngcp-call.js @@ -152,6 +152,12 @@ export function callRegister ({ instanceId }) { $incomingRtcSession = null }) callEvent.emit('incoming', $incomingRtcSession) + $incomingRtcSession.on('hold', (holdEvent) => { + callEvent.emit('incomingHold', holdEvent) + }) + $incomingRtcSession.on('unhold', (unholdEvent) => { + callEvent.emit('incomingUnHold', unholdEvent) + }) } } }) @@ -189,6 +195,20 @@ export async function callStart ({ number }) { ended (event) { callEvent.emit('outgoingEnded', event) $outgoingRtcSession = null + }, + hold (event) { + if (event.originator === 'local') { + callEvent.emit('outgoingHold', event) + } else { + callEvent.emit('outgoingHolded', event) + } + }, + unhold (event) { + if (event.originator === 'local') { + callEvent.emit('outgoingUnHold', event) + } else { + callEvent.emit('outgoingUnHolded', event) + } } }, mediaStream: $localMediaStream @@ -413,15 +433,8 @@ export function callToggleHold () { if (rtcSession) { if (rtcSession.isOnHold().local) { rtcSession.unhold() - callEvent.emit('callResumed') } else { rtcSession.hold() - callEvent.emit('callOnHold') } } } - -export function callIsOnHold () { - const rtcSession = callGetRtcSession() - return rtcSession ? rtcSession.isOnHold().local : false -} diff --git a/src/boot/ngcp-call.js b/src/boot/ngcp-call.js index 503f752c..02bf6755 100644 --- a/src/boot/ngcp-call.js +++ b/src/boot/ngcp-call.js @@ -78,4 +78,35 @@ export default async ({ app, store }) => { hasRemoteVideo: callHasRemoteVideo() }) }) + callEvent.on('incomingHold', (event) => { + if (event.originator === 'remote') { + store.commit('call/toggleHold') + store.commit('call/setRemoteOnHold', true) + } else if (event.originator === 'local') { + callEvent.on('outgoingHold', (event) => { + store.commit('call/toggleHold') + store.commit('call/setLocalOnHold', true) + store.commit('call/setRemoteOnHold', false) + }) + } + }) + callEvent.on('incomingUnHold', (event) => { + if (event.originator === 'remote') { + store.commit('call/toggleHold') + store.commit('call/setRemoteOnHold', false) + } else if (event.originator === 'local') { + callEvent.on('outgoingUnHold', (event) => { + store.commit('call/toggleHold') + store.commit('call/setLocalOnHold', false) + }) + } + }) + callEvent.on('outgoingHolded', (event) => { + store.commit('call/toggleHold') + store.commit('call/setLocalOnHold', true) + }) + callEvent.on('outgoingUnHolded', (event) => { + store.commit('call/toggleHold') + store.commit('call/setLocalOnHold', false) + }) } diff --git a/src/components/call/CscCall.vue b/src/components/call/CscCall.vue index d322287a..add535a5 100644 --- a/src/components/call/CscCall.vue +++ b/src/components/call/CscCall.vue @@ -67,7 +67,7 @@