mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-24 18:08:50 +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
|
||||
const buttonsList = [
|
||||
|
||||
// Audio button
|
||||
{
|
||||
icon: "fa-microphone",
|
||||
label: "mic",
|
||||
selected: false,
|
||||
onclick: () => {
|
||||
this.toggleStream(false)
|
||||
}
|
||||
},
|
||||
|
||||
// Hang up button
|
||||
{
|
||||
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
|
||||
{
|
||||
icon: "fa-expand",
|
||||
@ -129,7 +150,7 @@ class CallWindow extends CustomEvents {
|
||||
setButtonSelected(btn, IsFullScreen());
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
//Add buttons
|
||||
@ -140,6 +161,7 @@ class CallWindow extends CustomEvents {
|
||||
type: "div",
|
||||
innerHTML: "<i class='fa " + button.icon + "'></i>"
|
||||
});
|
||||
buttonEl.setAttribute("data-label", button.label)
|
||||
|
||||
//Add button optionnal 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)
|
||||
await this.PeerReady(user.userID)
|
||||
|
||||
// Start to stream audio & video
|
||||
await this.startStreaming();
|
||||
|
||||
|
||||
} catch(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
|
||||
*
|
||||
@ -423,14 +504,17 @@ class CallWindow extends CustomEvents {
|
||||
|
||||
/**
|
||||
* Start to send this client audio & video
|
||||
*
|
||||
* @param {boolean} includeVideo
|
||||
*/
|
||||
async startStreaming() {
|
||||
async startStreaming(includeVideo) {
|
||||
|
||||
// First, query user media
|
||||
const stream = await navigator.mediaDevices.getUserMedia({
|
||||
video: this.conv.can_have_video_call,
|
||||
video: this.conv.can_have_video_call && includeVideo,
|
||||
audio: true
|
||||
})
|
||||
this.mainStream = stream;
|
||||
|
||||
// Check if the window was closed in the mean time
|
||||
if(!this.isOpen)
|
||||
|
Loading…
Reference in New Issue
Block a user