From a7ff8322abd59d0e656ee3183b8f667d40c3654a Mon Sep 17 00:00:00 2001
From: lazorfuzz <leontosy@gmail.com>
Date: Thu, 31 May 2018 19:57:19 -0700
Subject: [PATCH] Add shout/whisper methods to API

---
 src/liowebrtc.js | 11 ++++++-----
 src/webrtc.js    |  8 ++++++++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/liowebrtc.js b/src/liowebrtc.js
index 95a6322..bb9c244 100644
--- a/src/liowebrtc.js
+++ b/src/liowebrtc.js
@@ -19,6 +19,7 @@ class LioWebRTC extends WildEmitter {
       remoteVideosEl: '',
       enableDataChannels: true,
       autoRequestMedia: false,
+      dataOnly: false,
       autoRemoveVideos: true,
       adjustPeerVolume: true,
       peerVolumeWhenSpeaking: 0.25,
@@ -120,8 +121,8 @@ class LioWebRTC extends WildEmitter {
     opts.debug = false;
     this.webrtc = new WebRTC(opts);
 
-      // attach a few methods from underlying lib to simple.
-    ['mute', 'unmute', 'pauseVideo', 'resumeVideo', 'pause', 'resume', 'sendToAll', 'sendDirectlyToAll', 'getPeers'].forEach((method) => {
+      // attach a few methods from underlying lib to liowebrtc.
+    ['mute', 'unmute', 'pauseVideo', 'resumeVideo', 'pause', 'resume', 'sendToAll', 'sendDirectlyToAll', 'getPeers', 'shout', 'whisper'].forEach((method) => {
       self[method] = self.webrtc[method].bind(self.webrtc);
     });
 
@@ -239,7 +240,7 @@ class LioWebRTC extends WildEmitter {
       if (data.type === 'volume') {
         self.emit('remoteVolumeChange', data.payload, peer);
       } else {
-        self.emit(data.type, data.payload, peer);
+        self.emit('receivedPeerData', data.type, data.payload, peer);
       }
     });
 
@@ -320,8 +321,8 @@ class LioWebRTC extends WildEmitter {
                 type,
                 enableDataChannels: self.config.enableDataChannels && type !== 'screen',
                 receiveMedia: {
-                  offerToReceiveAudio: type !== 'screen' && self.config.receiveMedia.offerToReceiveAudio ? 1 : 0,
-                  offerToReceiveVideo: self.config.receiveMedia.offerToReceiveVideo
+                  offerToReceiveAudio: type !== 'screen' && !self.config.dataOnly && self.config.receiveMedia.offerToReceiveAudio ? 1 : 0,
+                  offerToReceiveVideo: !self.config.dataOnly && self.config.receiveMedia.offerToReceiveVideo
                 }
               });
               self.emit('createdPeer', peer);
diff --git a/src/webrtc.js b/src/webrtc.js
index 125ddd7..c34d4e8 100644
--- a/src/webrtc.js
+++ b/src/webrtc.js
@@ -140,6 +140,14 @@ class WebRTC {
       }
     });
   }
+
+  shout(messageLabel, payload) {
+    sendDirectlyToAll(messageLabel, payload, 'liowebrtc');
+  }
+
+  whisper(peer, messageLabel, payload) {
+    peer.sendDirectly(messageLabel, payload);
+  }
 }
 
 util.inherits(WebRTC, localMedia);
-- 
GitLab