| @@ -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}), | |||
| ), | |||
| )), | |||