mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-26 13:59:23 +00:00
Do not start streaming by default
This commit is contained in:
parent
8263aacdf3
commit
dbf30acd19
@ -109,6 +109,16 @@ class CallWindow extends CustomEvents {
|
|||||||
// Display the list of buttons
|
// Display the list of buttons
|
||||||
const buttonsList = [
|
const buttonsList = [
|
||||||
|
|
||||||
|
// Audio button
|
||||||
|
{
|
||||||
|
icon: "fa-microphone",
|
||||||
|
label: "mic",
|
||||||
|
selected: false,
|
||||||
|
onclick: () => {
|
||||||
|
this.toggleStream(false)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Hang up button
|
// Hang up button
|
||||||
{
|
{
|
||||||
icon: "fa-phone",
|
icon: "fa-phone",
|
||||||
@ -119,6 +129,17 @@ class CallWindow extends CustomEvents {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Video button
|
||||||
|
{
|
||||||
|
icon: "fa-video-camera",
|
||||||
|
label: "camera",
|
||||||
|
selected: false,
|
||||||
|
onclick: () => {
|
||||||
|
this.toggleStream(true)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
//Full screen button
|
//Full screen button
|
||||||
{
|
{
|
||||||
icon: "fa-expand",
|
icon: "fa-expand",
|
||||||
@ -129,7 +150,7 @@ class CallWindow extends CustomEvents {
|
|||||||
setButtonSelected(btn, IsFullScreen());
|
setButtonSelected(btn, IsFullScreen());
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
//Add buttons
|
//Add buttons
|
||||||
@ -140,6 +161,7 @@ class CallWindow extends CustomEvents {
|
|||||||
type: "div",
|
type: "div",
|
||||||
innerHTML: "<i class='fa " + button.icon + "'></i>"
|
innerHTML: "<i class='fa " + button.icon + "'></i>"
|
||||||
});
|
});
|
||||||
|
buttonEl.setAttribute("data-label", button.label)
|
||||||
|
|
||||||
//Add button optionnal class
|
//Add button optionnal class
|
||||||
if(button.class)
|
if(button.class)
|
||||||
@ -155,6 +177,25 @@ class CallWindow extends CustomEvents {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh buttons state
|
||||||
|
*/
|
||||||
|
this.refreshButtonsState = () => {
|
||||||
|
|
||||||
|
// Microphone button
|
||||||
|
setButtonSelected(
|
||||||
|
bottomArea.querySelector("[data-label=\"mic\"]"),
|
||||||
|
this.mainStream && this.mainStream.getAudioTracks()[0].enabled
|
||||||
|
)
|
||||||
|
|
||||||
|
// Video button
|
||||||
|
setButtonSelected(
|
||||||
|
bottomArea.querySelector("[data-label=\"camera\"]"),
|
||||||
|
this.mainStream && this.mainStream.getVideoTracks().length > 0 &&
|
||||||
|
this.mainStream.getVideoTracks()[0].enabled
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -183,9 +224,6 @@ class CallWindow extends CustomEvents {
|
|||||||
if(user.userID != userID() && user.ready)
|
if(user.userID != userID() && user.ready)
|
||||||
await this.PeerReady(user.userID)
|
await this.PeerReady(user.userID)
|
||||||
|
|
||||||
// Start to stream audio & video
|
|
||||||
await this.startStreaming();
|
|
||||||
|
|
||||||
|
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
@ -379,6 +417,49 @@ class CallWindow extends CustomEvents {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle stream state
|
||||||
|
*
|
||||||
|
* @param {boolean} isVideo
|
||||||
|
*/
|
||||||
|
async toggleStream(isVideo) {
|
||||||
|
|
||||||
|
if(isVideo && !this.conv.can_have_video_call) {
|
||||||
|
notify("Video calls can not be perfomed on this conversations!", "danger")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const hasAudio = (this.mainPeer && !this.mainPeer.destroyed) === true;
|
||||||
|
const hasVideo = (this.mainPeer && !this.mainPeer.destroyed && this.mainStream && this.mainStream.getVideoTracks().length > 0) === true;
|
||||||
|
|
||||||
|
// Check if current stream is not enough
|
||||||
|
if(hasAudio && isVideo && !hasVideo)
|
||||||
|
this.mainPeer.destroy()
|
||||||
|
|
||||||
|
// Check if we have to start stream or just to mute them
|
||||||
|
if(!hasAudio || (isVideo && !hasVideo)) {
|
||||||
|
await this.startStreaming(isVideo)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle mute
|
||||||
|
else {
|
||||||
|
|
||||||
|
// Video
|
||||||
|
if(isVideo) {
|
||||||
|
this.mainStream.getVideoTracks()[0].enabled = !this.mainStream.getVideoTracks()[0].enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Audio
|
||||||
|
else {
|
||||||
|
this.mainStream.getAudioTracks()[0].enabled = !this.mainStream.getAudioTracks()[0].enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.refreshButtonsState()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add audio / video stream to the user
|
* Add audio / video stream to the user
|
||||||
*
|
*
|
||||||
@ -423,14 +504,17 @@ class CallWindow extends CustomEvents {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Start to send this client audio & video
|
* Start to send this client audio & video
|
||||||
|
*
|
||||||
|
* @param {boolean} includeVideo
|
||||||
*/
|
*/
|
||||||
async startStreaming() {
|
async startStreaming(includeVideo) {
|
||||||
|
|
||||||
// First, query user media
|
// First, query user media
|
||||||
const stream = await navigator.mediaDevices.getUserMedia({
|
const stream = await navigator.mediaDevices.getUserMedia({
|
||||||
video: this.conv.can_have_video_call,
|
video: this.conv.can_have_video_call && includeVideo,
|
||||||
audio: true
|
audio: true
|
||||||
})
|
})
|
||||||
|
this.mainStream = stream;
|
||||||
|
|
||||||
// Check if the window was closed in the mean time
|
// Check if the window was closed in the mean time
|
||||||
if(!this.isOpen)
|
if(!this.isOpen)
|
||||||
|
Loading…
Reference in New Issue
Block a user