diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2020-10-07 21:40:15 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2020-10-07 21:40:15 +0200 |
| commit | e2da0c51692b64318a0f1b8d888536ee632c53d6 (patch) | |
| tree | acefb947a6c9e20e0867400d08cde178e2e00b66 /extension | |
| parent | 02071d8e6e45dd253298d2e450ecfffacccaec19 (diff) | |
Add media and peer objects
Diffstat (limited to 'extension')
| -rw-r--r-- | extension/media.js | 29 | ||||
| -rw-r--r-- | extension/peers.js | 41 |
2 files changed, 70 insertions, 0 deletions
diff --git a/extension/media.js b/extension/media.js new file mode 100644 index 0000000..33c6fee --- /dev/null +++ b/extension/media.js @@ -0,0 +1,29 @@ +'use strict'; + +const internals = { + mediaStream: null +}; + +module.exports = { + async start() { + + internals.mediaStream = internals.mediaStream || await navigator.mediaDevices.getUserMedia({ + audio: true + }); + + return internals.mediaStream; + }, + + stop() { + + if (!internals.mediaStream) { + return; + } + + for (const track of internals.mediaStream.getAudioTracks()) { + track.stop(); + } + + internals.mediaStream = null; + } +}; diff --git a/extension/peers.js b/extension/peers.js new file mode 100644 index 0000000..41155d4 --- /dev/null +++ b/extension/peers.js @@ -0,0 +1,41 @@ +'use strict'; + +const internals = { + peers: {}, + + createAudioElement(source) { + + const audioElement = document.createElement('audio'); + audioElement.setAttribute('class', 'junction-call-audio'); + audioElement.src = source; + audioElement.autoplay = 'autoplay'; + document.querySelector('body').appendChild(audioElement); + + return audioElement; + } +}; + +module.exports = { + add(id, url) { + + internals.peers[id] && this.remove(id); + internals.peers[id] = internals.createAudioElement(url) + }, + + remove(id) { + + internals.peers[id] && internals.peers[id].remove(); + delete internals.peers[id]; + }, + + count() { + + return Object.keys(internals.peers).length; + }, + + reset() { + + internals.peers = {}; + document.querySelectorAll('.junction-call-audio').forEach((audioElement) => audioElement.remove()); + } +}; |