aboutsummaryrefslogtreecommitdiff
path: root/extension/peers.js
diff options
context:
space:
mode:
authorRubén Beltran del Río <954000-rbdr@users.noreply.gitlab.com>2020-10-07 19:46:01 +0000
committerRubén Beltran del Río <954000-rbdr@users.noreply.gitlab.com>2020-10-07 19:46:01 +0000
commit1d73636a839a4efe8e12cffb33714bc60c58dc4b (patch)
tree3bc1a40aa6228d31ad647b645dda460aab733761 /extension/peers.js
parent02071d8e6e45dd253298d2e450ecfffacccaec19 (diff)
parentd9e5fa1a04a38e02c4dc5b5967e9198ddad3a15d (diff)
Merge branch 'rbdr-peer-abstraction' into 'main'
Add Peer and Media abstractions See merge request rbdr/junction!5
Diffstat (limited to 'extension/peers.js')
-rw-r--r--extension/peers.js41
1 files changed, 41 insertions, 0 deletions
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());
+ }
+};