diff --git a/webclient/app-controller.js b/webclient/app-controller.js
index 20b5076727..4a57f66ef0 100644
--- a/webclient/app-controller.js
+++ b/webclient/app-controller.js
@@ -118,7 +118,7 @@ angular.module('MatrixWebClientController', ['matrixService', 'mPresence', 'even
angular.element('#ringAudio')[0].pause();
angular.element('#ringbackAudio')[0].pause();
angular.element('#callendAudio')[0].play();
- } else if (newVal == 'ended' && oldVal == 'invite_sent') {
+ } else if (newVal == 'ended' && oldVal == 'invite_sent' && $rootScope.currentCall.hangupParty == 'remote') {
angular.element('#ringAudio')[0].pause();
angular.element('#ringbackAudio')[0].pause();
angular.element('#busyAudio')[0].play();
diff --git a/webclient/components/matrix/matrix-call.js b/webclient/components/matrix/matrix-call.js
index ae20b7650e..aae00a3f77 100644
--- a/webclient/components/matrix/matrix-call.js
+++ b/webclient/components/matrix/matrix-call.js
@@ -58,12 +58,13 @@ angular.module('MatrixCall', [])
this.didConnect = false;
}
- MatrixCall.prototype.placeCall = function() {
+ MatrixCall.prototype.placeCall = function(config) {
self = this;
matrixPhoneService.callPlaced(this);
- navigator.getUserMedia({audio: true, video: false}, function(s) { self.gotUserMediaForInvite(s); }, function(e) { self.getUserMediaFailed(e); });
- self.state = 'wait_local_media';
+ navigator.getUserMedia({audio: config.audio, video: config.video}, function(s) { self.gotUserMediaForInvite(s); }, function(e) { self.getUserMediaFailed(e); });
+ this.state = 'wait_local_media';
this.direction = 'outbound';
+ this.config = config;
};
MatrixCall.prototype.initWithInvite = function(msg) {
@@ -105,6 +106,8 @@ angular.module('MatrixCall', [])
this.stopAllMedia();
this.peerConn.close();
+ this.hangupParty = 'local';
+
var content = {
version: 0,
call_id: this.call_id,
@@ -285,6 +288,7 @@ angular.module('MatrixCall', [])
self = this;
$rootScope.$apply(function() {
self.state = 'ended';
+ this.hangupParty = 'remote';
self.stopAllMedia();
this.peerConn.close();
self.onHangup();
@@ -300,6 +304,7 @@ angular.module('MatrixCall', [])
MatrixCall.prototype.onHangupReceived = function() {
this.state = 'ended';
+ this.hangupParty = 'remote';
this.stopAllMedia();
this.peerConn.close();
this.onHangup();
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js
index 59f64061cd..3d75ef5499 100644
--- a/webclient/room/room-controller.js
+++ b/webclient/room/room-controller.js
@@ -756,7 +756,15 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
var call = new MatrixCall($scope.room_id);
call.onError = $rootScope.onCallError;
call.onHangup = $rootScope.onCallHangup;
- call.placeCall();
+ call.placeCall({audio: true, video: false});
+ $rootScope.currentCall = call;
+ };
+
+ $scope.startVideoCall = function() {
+ var call = new MatrixCall($scope.room_id);
+ call.onError = $rootScope.onCallError;
+ call.onHangup = $rootScope.onCallHangup;
+ call.placeCall({audio: true, video: true});
$rootScope.currentCall = call;
};
|