summaryrefslogtreecommitdiff
path: root/app/client/audio/lib/index.js
blob: 2d89ff6791fd067bd6408acccdf255b0df8824c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import Tone from 'tone'
import StartAudioContext from './startAudioContext'

import { is_mobile } from '../../util'

export function requestAudioContext (fn) {
  if (is_mobile) {
    const container = document.createElement('div')
    const button = document.createElement('div')
    button.innerHTML = 'Tap to start - please unmute your phone'
    Object.assign(container.style, {
      display: 'block',
      position: 'absolute',
      width: '100%',
      height: '100%',
      zIndex: '10000',
      top: '0px',
      left: '0px',
      backgroundColor: 'rgba(0, 0, 0, 0.8)',
    })
    Object.assign(button.style, {
      display: 'block',
      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',
      width: '150px',
    })
    container.appendChild(button)
    document.body.appendChild(container)
    StartAudioContext.setContext(Tone.context)
    StartAudioContext.on(button)
    StartAudioContext.onStarted(_ => {
      container.remove()
      fn()
    })
  } else {
    fn()
  }
}