|
|
@@ -20,6 +20,7 @@ marked.setOptions(markedOptions) |
|
|
|
*/ |
|
|
|
const wire = (message) => State.websocket.send(JSON.stringify(message)) |
|
|
|
const signal = (message) => dispatchEvent(new CustomEvent(message.kind, {detail: message})) |
|
|
|
const signalPeerRequest = () => wire({kind: 'peerInfo', value: {type: 'request'}}) |
|
|
|
const signalPeerStop = (username) => signal({kind: 'peerInfo', value: {type: 'stop'}, source: username}) |
|
|
|
const listen = (kind, handler) => addEventListener(kind, handler) |
|
|
|
listen('login', ({detail}) => State.username = detail.value) |
|
|
@@ -102,7 +103,7 @@ const setSelectedMedia = async () => { |
|
|
|
|
|
|
|
oldTracks.forEach(track => {track.stop(); localStream.removeTrack(track)}) |
|
|
|
document.querySelectorAll('video').forEach(video => video.srcObject = video.srcObject) |
|
|
|
wire({kind: 'peerInfo', value: {type: 'request'}}) |
|
|
|
signalPeerRequest() |
|
|
|
} |
|
|
|
const onPeerInfo = async ({detail: message}) => { |
|
|
|
const localStream = State.streams[State.username] |
|
|
@@ -332,7 +333,7 @@ const Media = { |
|
|
|
), |
|
|
|
m('label', |
|
|
|
m('input#mute-check', {onchange: setSelectedMedia, type: 'checkbox'}), |
|
|
|
'mute' |
|
|
|
m('mute'), |
|
|
|
), |
|
|
|
), |
|
|
|
m('.videos', {className: VideoOptions.anyFullScreen()}, |
|
|
@@ -401,7 +402,9 @@ const Chat = { |
|
|
|
m('button', {onclick: Login.sendLogout}, 'Logout'), |
|
|
|
m('.user-list', State.online.map(username => |
|
|
|
m('details', |
|
|
|
m('summary', username), |
|
|
|
m('summary', |
|
|
|
m('span', username), |
|
|
|
), |
|
|
|
m(VideoOptions, {username}), |
|
|
|
), |
|
|
|
)), |