| @@ -127,6 +127,9 @@ const Chat = { | |||
| ) | |||
| }, | |||
| } | |||
| marked.setOptions({ | |||
| breaks: true, | |||
| }) | |||
| addEventListener('focus', m.redraw) | |||
| addEventListener('post', ({detail}) => { | |||
| Chat.posts.push(detail) | |||
| @@ -137,6 +140,7 @@ addEventListener('logout', () => { | |||
| Chat.posts = [] | |||
| Chat.unseenCount = 0 | |||
| }) | |||
| marked.setOptions({ | |||
| breaks: true, | |||
| addEventListener('load', () => { | |||
| Headers.push([ChatConfig]) | |||
| Apps.push([Shadow, {key: 'chat-shadow', app: Chat}]) | |||
| }) | |||
| @@ -210,7 +210,12 @@ const StreamContainer = { | |||
| ) | |||
| }, | |||
| } | |||
| const signalPeerStop = (username) => signal({kind: 'peerInfo', value: {type: 'stop'}, source: username}) | |||
| const signalPeerStop = (username) => { | |||
| signal({kind: 'peerInfo', value: {type: 'stop'}, source: username}) | |||
| } | |||
| addEventListener('pagehide', () => State.online.forEach(signalPeerStop)) | |||
| addEventListener('logout', () => State.online.forEach(signalPeerStop)) | |||
| addEventListener('load', () => { | |||
| Headers.push([VideoConfig]) | |||
| Apps.push([StreamContainer, {key: 'stream-container'}]) | |||
| }) | |||
| @@ -7,11 +7,11 @@ | |||
| <script src="/libs/mithril.min.js"></script> | |||
| <script src="/libs/marked.min.js"></script> | |||
| <script src="/libs/purify.min.js"></script> | |||
| <script src="/pico.js" defer></script> | |||
| <script src="/apps/streams.js"></script> | |||
| <script src="/apps/chat.js"></script> | |||
| <script src="/apps/volume.js"></script> | |||
| <!-- <script src="/apps/volume.js"></script> --> | |||
| <!-- <script src="/apps/screen.js"></script> --> | |||
| <script src="/pico.js" defer></script> | |||
| </head> | |||
| <body style="margin: 0; padding: 0;"> | |||
| <div>PicoChat requires JS</div> | |||
| @@ -191,13 +191,7 @@ const Base = { | |||
| } | |||
| return m('main', {style: mainStyle}, | |||
| m('header', {style: headerStyle}, | |||
| State.isConnected ? [ | |||
| m('button', {onclick: Base.sendLogout}, 'log-out'), | |||
| m(VideoConfig), | |||
| m(ChatConfig), | |||
| m('button', {onclick: VolumeMap.toggle}, 'volume'), | |||
| // m('button', {onclick: ScreenShare.toggle}, 'screen'), | |||
| ] : [ | |||
| State.isConnected ? Headers.map(h => m(...h)) : [ | |||
| m('form.login', | |||
| {onsubmit: Base.sendLogin}, | |||
| m('input', attrs), | |||
| @@ -206,13 +200,17 @@ const Base = { | |||
| ], | |||
| m('span.error', State.info), | |||
| ), | |||
| State.isConnected ? [ | |||
| m(StreamContainer, {key: 'lolo'}), | |||
| m(Shadow, {key: 'chat-shadow', app: Chat}), | |||
| m(Shadow, {key: 'map-shadow', app: VolumeMap}), | |||
| // m(Shadow, {key: 'screen-shadow', app: ScreenShare}), | |||
| ] : m(Settings), | |||
| State.isConnected ? Apps.map(a => m(...a)) : null, | |||
| ) | |||
| }, | |||
| } | |||
| m.mount(document.body, Base) | |||
| const Headers = [ | |||
| ['button', {onclick: Base.sendLogout}, 'log-out'], | |||
| // m('button', {onclick: VolumeMap.toggle}, 'volume'), | |||
| // m('button', {onclick: ScreenShare.toggle}, 'screen'), | |||
| ] | |||
| const Apps = [ | |||
| // m(Shadow, {key: 'map-shadow', app: VolumeMap}), | |||
| // m(Shadow, {key: 'screen-shadow', app: ScreenShare}), | |||
| ] | |||
| addEventListener('load', () => m.mount(document.body, Base)) | |||