diff --git a/clientapp/helpers/xmppEventHandlers.js b/clientapp/helpers/xmppEventHandlers.js index 1c1853b..a875954 100644 --- a/clientapp/helpers/xmppEventHandlers.js +++ b/clientapp/helpers/xmppEventHandlers.js @@ -431,12 +431,15 @@ module.exports = function (client, app) { contact.callState = ''; contact.jingleCall = null; contact.onCall = false; + if (me.calls.length == 1) { // this is the last call + client.jingle.stopLocalMedia(); + client.jingle.localStream = null; + } }); client.on('jingle:accepted', function (session) { var contact = me.getContact(session.peer); contact.callState = 'activeCall'; - console.log('jingle accepted...'); contact.onCall = true; }); diff --git a/clientapp/pages/chat.js b/clientapp/pages/chat.js index 7be10f3..b17cafc 100644 --- a/clientapp/pages/chat.js +++ b/clientapp/pages/chat.js @@ -231,20 +231,21 @@ module.exports = BasePage.extend({ e.preventDefault(); var self = this; - //if (!(this.model.jingleCall && this.model.jingleCall.jingleSession)) return; this.$('button.accept').prop('disabled', true); if (this.model.jingleCall.jingleSession.state == 'pending') { if (!client.jingle.localStream) { client.jingle.startLocalMedia(null, function (err) { if (err) { - this.model.jingleCall.end({ + self.model.jingleCall.end({ condition: 'decline' }); } else { + client.sendPresence({to: client.JID(self.model.jingleCall.jingleSession.peer) }); self.model.jingleCall.jingleSession.accept(); } }); } else { + client.sendPresence({to: client.JID(this.model.jingleCall.jingleSession.peer) }); this.model.jingleCall.jingleSession.accept(); } } @@ -253,13 +254,14 @@ module.exports = BasePage.extend({ handleEndClick: function (e) { e.preventDefault(); var condition = 'success'; - if (this.model.jingleCall && this.model.jingleCall.jingleSession && - this.model.jingleCall.jingleSession.state == 'pending') { - condition = 'decline'; + if (this.model.jingleCall) { + if (this.model.jingleCall.jingleSession && this.model.jingleCall.jingleSession.state == 'pending') { + condition = 'decline'; + } + this.model.jingleCall.end({ + condition: condition + }); } - this.model.jingleCall.end({ - condition: condition - }); return false; }, handleMuteClick: function (e) {