diff options
| author | Jules Laplace <jules@okfoc.us> | 2017-04-27 14:03:38 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2017-04-27 14:03:38 -0400 |
| commit | 89e0282ece3db0d31c81bb30794d559889fb7dee (patch) | |
| tree | a37ed2b07c14bf154f3af9403b591680dcddd134 /client/lib/util.js | |
| parent | 370e7a69816bfc604386e4fd21acb465e48bdb0b (diff) | |
startAudioContext
Diffstat (limited to 'client/lib/util.js')
| -rw-r--r-- | client/lib/util.js | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/client/lib/util.js b/client/lib/util.js index 7c3082d..72be9b7 100644 --- a/client/lib/util.js +++ b/client/lib/util.js @@ -1,4 +1,58 @@ +import Tone from 'tone' +import StartAudioContext from './startAudioContext' + +const isIphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) +const isIpad = (navigator.userAgent.match(/iPad/i)) +const isAndroid = (navigator.userAgent.match(/Android/i)) +const isMobile = isIphone || isIpad || isAndroid +const isDesktop = ! isMobile + +document.body.classList.add(isMobile ? 'mobile' : 'desktop') + +const browser = { isIphone, isIpad, isMobile, isDesktop } + function choice (a){ return a[ Math.floor(Math.random() * a.length) ] } function mod(n,m){ return n-(m * Math.floor(n/m)) } -export { choice, mod } +function requestAudioContext (fn) { + if (isMobile) { + const container = document.createElement('div') + const button = document.createElement('div') + button.innerHTML = 'Tap to start - please unmute your phone' + Object.assign(container.style, { + position: 'absolute', + width: '100%', + height: '100%', + zIndex: '10000', + top: '0px', + left: '0px', + backgroundColor: 'rgba(0, 0, 0, 0.8)', + }) + Object.assign(button.style, { + position: 'absolute', + left: '50%', + top: '50%', + padding: '20px', + backgroundColor: '#7F33ED', + color: 'white', + fontFamily: 'monospace', + borderRadius: '3px', + transform: 'translate3D(-50%,-50%,0)', + textAlign: 'center', + lineHeight: '1.5', + }) + container.appendChild(button) + document.body.appendChild(container) + StartAudioContext.setContext(Tone.context) + StartAudioContext.on(button) + StartAudioContext.onStarted(_ => { + container.remove() + fn() + }) + } else { + fn() + } +} + +export { choice, mod, browser, requestAudioContext } + |
