Notify a callee that their browser doesn't support VoIP too.

SYWEB-14 #resolved
This commit is contained in:
David Baker 2014-09-19 18:22:14 +01:00
parent 99b0c9900e
commit 648fd2a622
5 changed files with 20 additions and 9 deletions

View file

@ -42,11 +42,13 @@ window.RTCIceCandidate = window.RTCIceCandidate || window.webkitRTCIceCandidate
// Returns true if the browser supports all required features to make WebRTC call
var isWebRTCSupported = function () {
return (navigator.getUserMedia || window.RTCPeerConnection || window.RTCSessionDescription || window.RTCIceCandidate);
return !!(navigator.getUserMedia || window.RTCPeerConnection || window.RTCSessionDescription || window.RTCIceCandidate);
};
angular.module('MatrixCall', [])
.factory('MatrixCall', ['matrixService', 'matrixPhoneService', '$rootScope', '$timeout', function MatrixCallFactory(matrixService, matrixPhoneService, $rootScope, $timeout) {
$rootScope.isWebRTCSupported = isWebRTCSupported();
var MatrixCall = function(room_id) {
this.room_id = room_id;
this.call_id = "c" + new Date().getTime();

View file

@ -59,6 +59,16 @@ angular.module('matrixPhoneService', [])
var MatrixCall = $injector.get('MatrixCall');
var call = new MatrixCall(event.room_id);
if (!isWebRTCSupported()) {
console.log("Incoming call ID "+msg.call_id+" but this browser doesn't support WebRTC");
// don't hang up the call: there could be other clients connected that do support WebRTC and declining the
// the call on their behalf would be really annoying.
// instead, we broadcast a fake call event with a non-functional call object
$rootScope.$broadcast(matrixPhoneService.INCOMING_CALL_EVENT, call);
return;
}
call.call_id = msg.call_id;
call.initWithInvite(event);
matrixPhoneService.allCalls[call.call_id] = call;