aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/auto-reload.js
blob: 95a744b2ca919a5c04b6a3d982704d43ac9859a3 (plain) (blame)
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
const once = require('once')
const ensnare = require('./ensnare.js')

module.exports = setupDappAutoReload


function setupDappAutoReload(web3, controlStream){

  // export web3 as a global, checking for usage
  var pageIsUsingWeb3 = false
  var resetWasRequested = false
  global.web3 = ensnare(web3, once(function(){
    // if web3 usage happened after a reset request, trigger reset late
    if (resetWasRequested) return triggerReset()
    // mark web3 as used
    pageIsUsingWeb3 = true
    // reset web3 reference
    global.web3 = web3
  }))

  // listen for reset requests from metamask
  controlStream.once('data', function(){
    resetWasRequested = true
    // ignore if web3 was not used
    if (!pageIsUsingWeb3) return
    // reload after short timeout
    triggerReset()
  })

  // reload the page
  function triggerReset(){
    setTimeout(function(){
      global.location.reload()
    }, 500)
  }

}