(() => { const io = require('socket.io-client'); const internals = { kSocketUrl: 'http://unlimited.pizza:8000/', port: null, socket: null, peers: 0, onMessage(message) { internals[message.action](message.data); }, async joinAudioCall(data) { try { const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true }); internals.socket = io(internals.kSocketUrl); console.log('Connecting to server'); internals.socket.on('connect', function() { console.log("Connected to signaling server"); internals.socket.emit('join', { 'url': currentUrl, }); }); internals.socket.on('disconnect', function() { console.log("disconnected from signaling server"); }); internals.socket.on('addPeer', function(data) { console.log(data); internals.peers++; console.log(`There are now ${internals.peers} participants`); }); internals.socket.on('removePeer', function() { internals.peers--; console.log(`There are now ${internals.peers} participants`); }); console.log('Done!'); internals.createAudioElement(data.tada); } catch (err) { internals.port.postMessage({ action: 'error' }); internals.port.disconnect(); internals.createAudioElement(data.tada); } }, hangUp() { document.querySelectorAll('.junction-call-audio').forEach((audioElement) => audioElement.remove()); internals.socket.close(); internals.port.disconnect(); }, createAudioElement(source, type = 'audio/wav') { const audioElement = document.createElement('audio'); audioElement.setAttribute('class', 'junction-call-audio'); audioElement.src = source; audioElement.autoplay = 'autoplay'; audioElement.type = type; document.querySelector('body').appendChild(audioElement); } }; internals.port = chrome.runtime.connect({ name:"content" }); internals.port.onMessage.addListener(internals.onMessage); })(); // Indicates to the background script that we executed correctly true;