desktop notification from incoming call

This commit is contained in:
Martti Malmi 2020-04-09 16:34:00 +03:00
parent 8265d7c0d5
commit c8b8f850f6

View File

@ -5,6 +5,7 @@ var activeCall;
var callTimeout; var callTimeout;
var callSoundTimeout; var callSoundTimeout;
var callingInterval; var callingInterval;
var incomingCallNotification;
var userMediaStream; var userMediaStream;
var localVideo = $('<video>').attr('autoplay', true).attr('playsinline', true).css({width:'50%', 'max-height': '60%'}); var localVideo = $('<video>').attr('autoplay', true).attr('playsinline', true).css({width:'50%', 'max-height': '60%'});
var remoteVideo = $('<video>').attr('autoplay', true).attr('playsinline', true).css({width:'50%', 'max-height': '60%'}); var remoteVideo = $('<video>').attr('autoplay', true).attr('playsinline', true).css({width:'50%', 'max-height': '60%'});
@ -32,6 +33,18 @@ function onCallMessage(pub, call) {
incomingCallEl.append(reject); incomingCallEl.append(reject);
$('body').append(incomingCallEl) $('body').append(incomingCallEl)
ringSound.play(); ringSound.play();
if (document.visibilityState !== 'visible') {
incomingCallNotification = new Notification(chats[pub].name, {
icon: 'img/icon128.png',
body: 'Incoming call',
requireInteraction: true,
silent: true
});
incomingCallNotification.onclick = function() {
showChat(pub);
window.focus();
};
}
} }
clearTimeout(callTimeout); clearTimeout(callTimeout);
callTimeout = setTimeout(() => { callTimeout = setTimeout(() => {
@ -57,10 +70,7 @@ function onCallMessage(pub, call) {
} }
} else { } else {
//stopCalling(pub); //stopCalling(pub);
activeCall = null; rejectCall(pub);
ringSound.pause();
clearTimeout(callTimeout);
$('#incoming-call').remove();
} }
} }
@ -152,8 +162,14 @@ function endCall(pub) {
} }
function rejectCall(pub) { function rejectCall(pub) {
activeCall = null;
ringSound.pause(); ringSound.pause();
ringSound.currentTime = 0; ringSound.currentTime = 0;
clearTimeout(callTimeout);
$('#incoming-call').remove();
if (incomingCallNotification) {
incomingCallNotification.close();
}
} }
async function createCallElement(pub) { async function createCallElement(pub) {