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