nifty-wallet/app/scripts/inpage.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2016-07-06 20:32:36 -07:00
/*global Web3*/
cleanContextForImports()
require('web3/dist/web3.min.js')
2017-10-25 15:45:26 -07:00
const log = require('loglevel')
const LocalMessageDuplexStream = require('post-message-stream')
const setupDappAutoReload = require('./lib/auto-reload.js')
2016-05-22 15:23:16 -07:00
const MetamaskInpageProvider = require('./lib/inpage-provider.js')
restoreContextAfterImports()
log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn')
2015-10-09 23:14:18 -07:00
2016-02-14 21:53:54 -08:00
//
2015-12-18 22:05:16 -08:00
// setup plugin communication
2016-02-14 21:53:54 -08:00
//
// setup background connection
2016-05-22 15:23:16 -07:00
var metamaskStream = new LocalMessageDuplexStream({
2018-07-18 07:17:25 -07:00
name: 'nifty-inpage',
target: 'nifty-contentscript',
2015-12-18 22:05:16 -08:00
})
2016-05-05 16:04:43 -07:00
2016-05-22 15:23:16 -07:00
// compose the inpage provider
var inpageProvider = new MetamaskInpageProvider(metamaskStream)
2016-04-14 21:11:35 -07:00
//
2016-05-05 16:04:43 -07:00
// setup web3
2016-04-14 21:11:35 -07:00
//
2016-05-22 15:23:16 -07:00
var web3 = new Web3(inpageProvider)
2016-06-21 13:18:32 -07:00
web3.setProvider = function () {
2018-07-17 10:18:12 -07:00
log.debug('Nifty Wallet - overrode web3.setProvider')
2016-04-14 21:11:35 -07:00
}
2018-07-17 10:18:12 -07:00
log.debug('Nifty Wallet - injected web3')
2018-06-12 09:28:50 -07:00
setupDappAutoReload(web3, inpageProvider.publicConfigStore)
2018-06-12 09:28:50 -07:00
// export global web3, with usage-detection and deprecation warning
/* TODO: Uncomment this area once auto-reload.js has been deprecated:
let hasBeenWarned = false
global.web3 = new Proxy(web3, {
get: (_web3, key) => {
// show warning once on web3 access
if (!hasBeenWarned && key !== 'currentProvider') {
2018-07-17 10:18:12 -07:00
console.warn('Nifty Wallet: web3 will be deprecated in the near future in favor of the ethereumProvider \nhttps://github.com/MetaMask/faq/blob/master/detecting_metamask.md#web3-deprecation')
hasBeenWarned = true
}
// return value normally
return _web3[key]
},
set: (_web3, key, value) => {
// set value normally
_web3[key] = value
},
})
*/
// set web3 defaultAccount
2016-06-21 13:18:32 -07:00
inpageProvider.publicConfigStore.subscribe(function (state) {
web3.eth.defaultAccount = state.selectedAddress
})
// need to make sure we aren't affected by overlapping namespaces
// and that we dont affect the app with our namespace
// mostly a fix for web3's BigNumber if AMD's "define" is defined...
2016-06-21 13:18:32 -07:00
var __define
/**
* Caches reference to global define object and deletes it to
* avoid conflicts with other global define objects, such as
* AMD's define function
*/
2016-06-21 13:18:32 -07:00
function cleanContextForImports () {
__define = global.define
try {
global.define = undefined
} catch (_) {
2018-07-17 10:18:12 -07:00
console.warn('Nifty Wallet - global.define could not be deleted.')
}
}
/**
* Restores global define object from cached reference
*/
2016-06-21 13:18:32 -07:00
function restoreContextAfterImports () {
try {
global.define = __define
2016-07-18 18:08:29 -07:00
} catch (_) {
2018-07-17 10:18:12 -07:00
console.warn('Nifty Wallet - global.define could not be overwritten.')
}
2016-05-05 16:04:43 -07:00
}