diff --git a/app/src/Api.js b/app/src/Api.js
index 6b4a42e..076afd0 100644
--- a/app/src/Api.js
+++ b/app/src/Api.js
@@ -12,7 +12,6 @@ COPIED, EDITED, OR REPRODUCED WITHOUT PERMISSION.
/*global chrome*/
const API_HOST = 'https://api.chromewatchparty.com';
-// const API_HOST = 'http://localhost:5000/watch-party-crx/us-central1/widgets';
export const PLAYER_STATUS = {
PLAYING: 'PLAYING',
diff --git a/app/src/CallManager.js b/app/src/CallManager.js
index f503add..73ceb9e 100644
--- a/app/src/CallManager.js
+++ b/app/src/CallManager.js
@@ -157,12 +157,6 @@ export default class CallManager {
usingVideo: false,
conference: null,
});
- document.querySelectorAll('.vxt-video').forEach((v) => {
- v.srcObject.getTracks().forEach((track) => {
- track.stop();
- });
- v.remove();
- });
});
}
async openSession() {
@@ -212,24 +206,56 @@ export default class CallManager {
const vidNode = document.createElement('video');
vidNode.id = participant.id;
vidNode.muted = true;
- vidNode.classList.add('vxt-video');
- document.querySelector('.vxt-video-container').appendChild(vidNode);
vidNode.srcObject = stream;
vidNode.onloadedmetadata = vidNode.play;
+
+ const vidContainerNode = document.createElement('div');
+ vidContainerNode.classList.add('vxt-video');
+ vidContainerNode.setAttribute('data-id', participant.id);
+ vidContainerNode.setAttribute('data-name', participant.info.name || '');
+ vidContainerNode.appendChild(vidNode);
+
+ console.log(participant);
+
+ if (participant.info.externalId !== LocalData().userUid) {
+ const volSliderNode = document.createElement('input');
+ volSliderNode.setAttribute('type', 'range');
+ volSliderNode.min = '0';
+ volSliderNode.max = '1';
+ volSliderNode.value = '1';
+ volSliderNode.step = '0.1';
+ volSliderNode.id = 'vxt-slider-' + participant.id;
+ volSliderNode.classList.add('vxt-slider');
+ volSliderNode.onchange = (e) => {
+ const v = e.target.value;
+ const audioOuts = document.querySelectorAll('audio.vxt-audio');
+ if (audioOuts.length > 0) {
+ audioOuts.forEach((el) => {
+ if (el.id === `audio-${participant.id}`) {
+ el.volume = v;
+ }
+ });
+ }
+ };
+ vidContainerNode.appendChild(volSliderNode);
+ }
+
+ document.querySelector('.vxt-video-container').appendChild(vidContainerNode);
}
this.listener({ callActionPending: false });
});
VoxeetSDK.conference.on('streamRemoved', (participant, stream) => {
+ const vcid = ".vxt-video[data-id='" + participant.id + "']";
const vid = 'video#' + participant.id;
- if (document.querySelector(vid)) {
+ if (document.querySelector(vcid)) {
document
.querySelector(vid)
.srcObject.getTracks()
.forEach((track) => {
track.stop();
});
- document.querySelector(vid).remove();
+ document.querySelector(vcid).remove();
}
this.listener({ callActionPending: false });
});
diff --git a/app/src/Chat.js b/app/src/Chat.js
index 3876429..2a859d7 100644
--- a/app/src/Chat.js
+++ b/app/src/Chat.js
@@ -492,19 +492,6 @@ export default class Chat extends Component {
}
return null;
}
- setVideoVolume(v, id) {
- const audioOuts = document.querySelectorAll('audio.vxt-audio');
- if (audioOuts.length >= 0) {
- audioOuts.forEach((el) => {
- if (el.id === `audio-${id}`) {
- el.volume = v * 0.1;
- const { volumes } = this.state;
- volumes[id] = v;
- this.setState({ volumes });
- }
- });
- }
- }
handleVideo() {
const { usingVideo } = this.state;
this.mCallManager.toggleVideo(!usingVideo);
@@ -688,55 +675,6 @@ export default class Chat extends Component {