mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-26 12:29:06 +01:00
require metamascara
This commit is contained in:
parent
bbae8d975e
commit
29dd81d029
@ -1,57 +1,26 @@
|
||||
window.addEventListener('load', web3Detect)
|
||||
const EthQuery = require('ethjs-query')
|
||||
|
||||
window.addEventListener('load', loadProvider)
|
||||
window.addEventListener('message', console.warn)
|
||||
|
||||
function web3Detect() {
|
||||
if (global.web3) {
|
||||
logToDom('web3 detected!')
|
||||
startApp()
|
||||
} else {
|
||||
logToDom('no web3 detected!')
|
||||
}
|
||||
async function loadProvider() {
|
||||
const ethereumProvider = window.metamask.createDefaultProvider({ host: 'http://localhost:9001' })
|
||||
const ethQuery = new EthQuery(ethereumProvider)
|
||||
const accounts = await ethQuery.accounts()
|
||||
logToDom(accounts.length ? accounts[0] : 'LOCKED or undefined')
|
||||
setupButton(ethQuery)
|
||||
}
|
||||
|
||||
function startApp(){
|
||||
console.log('app started')
|
||||
|
||||
var primaryAccount
|
||||
console.log('getting main account...')
|
||||
web3.eth.getAccounts((err, addresses) => {
|
||||
if (err) console.error(err)
|
||||
console.log('set address', addresses[0])
|
||||
primaryAccount = addresses[0]
|
||||
})
|
||||
|
||||
document.querySelector('.action-button-1').addEventListener('click', function(){
|
||||
console.log('saw click')
|
||||
console.log('sending tx')
|
||||
primaryAccount
|
||||
web3.eth.sendTransaction({
|
||||
from: primaryAccount,
|
||||
to: primaryAccount,
|
||||
value: 0,
|
||||
}, function(err, txHash){
|
||||
if (err) throw err
|
||||
console.log('sendTransaction result:', err || txHash)
|
||||
})
|
||||
})
|
||||
document.querySelector('.action-button-2').addEventListener('click', function(){
|
||||
console.log('saw click')
|
||||
setTimeout(function(){
|
||||
console.log('sending tx')
|
||||
web3.eth.sendTransaction({
|
||||
from: primaryAccount,
|
||||
to: primaryAccount,
|
||||
value: 0,
|
||||
}, function(err, txHash){
|
||||
if (err) throw err
|
||||
console.log('sendTransaction result:', err || txHash)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function logToDom(message){
|
||||
document.body.appendChild(document.createTextNode(message))
|
||||
document.getElementById('account').innerText = message
|
||||
console.log(message)
|
||||
}
|
||||
|
||||
function setupButton (ethQuery) {
|
||||
const button = document.getElementById('action-button-1')
|
||||
button.addEventListener('click', async () => {
|
||||
const accounts = await ethQuery.accounts()
|
||||
logToDom(accounts.length ? accounts[0] : 'LOCKED or undefined')
|
||||
})
|
||||
}
|
@ -3,13 +3,13 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>MetaMask ZeroClient Example</title>
|
||||
<script src="http://localhost:9001/metamascara.js"></script>
|
||||
<title>MetaMask ZeroClient Example</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<button class="action-button-1">SYNC TX</button>
|
||||
<button class="action-button-2">ASYNC TX</button>
|
||||
<button id="action-button-1">GET ACCOUNT</button>
|
||||
<div id="account"></div>
|
||||
<script src="./app.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,19 +0,0 @@
|
||||
const Iframe = require('iframe')
|
||||
const createIframeStream = require('iframe-stream').IframeStream
|
||||
|
||||
module.exports = setupIframe
|
||||
|
||||
|
||||
function setupIframe(opts) {
|
||||
opts = opts || {}
|
||||
var frame = Iframe({
|
||||
src: opts.zeroClientProvider || 'https://zero.metamask.io/',
|
||||
container: opts.container || document.head,
|
||||
sandboxAttributes: opts.sandboxAttributes || ['allow-scripts', 'allow-popups'],
|
||||
})
|
||||
var iframe = frame.iframe
|
||||
iframe.style.setProperty('display', 'none')
|
||||
var iframeStream = createIframeStream(iframe)
|
||||
|
||||
return iframeStream
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
const setupIframe = require('./setup-iframe.js')
|
||||
const MetamaskInpageProvider = require('../../../app/scripts/lib/inpage-provider.js')
|
||||
|
||||
module.exports = getProvider
|
||||
|
||||
|
||||
function getProvider(opts){
|
||||
if (global.web3) {
|
||||
console.log('MetaMask ZeroClient - using environmental web3 provider')
|
||||
return global.web3.currentProvider
|
||||
}
|
||||
console.log('MetaMask ZeroClient - injecting zero-client iframe!')
|
||||
var iframeStream = setupIframe({
|
||||
zeroClientProvider: opts.mascaraUrl,
|
||||
sandboxAttributes: ['allow-scripts', 'allow-popups', 'allow-same-origin'],
|
||||
container: document.body,
|
||||
})
|
||||
|
||||
var inpageProvider = new MetamaskInpageProvider(iframeStream)
|
||||
return inpageProvider
|
||||
|
||||
}
|
@ -1,47 +1 @@
|
||||
const Web3 = require('web3')
|
||||
const setupProvider = require('./lib/setup-provider.js')
|
||||
const setupDappAutoReload = require('../../app/scripts/lib/auto-reload.js')
|
||||
const MASCARA_ORIGIN = process.env.MASCARA_ORIGIN || 'http://localhost:9001'
|
||||
console.log('MASCARA_ORIGIN:', MASCARA_ORIGIN)
|
||||
|
||||
//
|
||||
// setup web3
|
||||
//
|
||||
|
||||
const provider = setupProvider({
|
||||
mascaraUrl: MASCARA_ORIGIN + '/proxy/',
|
||||
})
|
||||
instrumentForUserInteractionTriggers(provider)
|
||||
|
||||
const web3 = new Web3(provider)
|
||||
setupDappAutoReload(web3, provider.publicConfigStore)
|
||||
//
|
||||
// ui stuff
|
||||
//
|
||||
|
||||
let shouldPop = false
|
||||
window.addEventListener('click', maybeTriggerPopup)
|
||||
|
||||
//
|
||||
// util
|
||||
//
|
||||
|
||||
function maybeTriggerPopup(){
|
||||
if (!shouldPop) return
|
||||
shouldPop = false
|
||||
window.open(MASCARA_ORIGIN, '', 'width=360 height=500')
|
||||
console.log('opening window...')
|
||||
}
|
||||
|
||||
function instrumentForUserInteractionTriggers(provider){
|
||||
const _super = provider.sendAsync.bind(provider)
|
||||
provider.sendAsync = function(payload, cb){
|
||||
if (payload.method === 'eth_sendTransaction') {
|
||||
console.log('saw send')
|
||||
shouldPop = true
|
||||
}
|
||||
_super(payload, cb)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
global.metamask = require('metamascara')
|
||||
|
@ -99,6 +99,7 @@
|
||||
"json-rpc-engine": "^3.1.0",
|
||||
"json-rpc-middleware-stream": "^1.0.0",
|
||||
"loglevel": "^1.4.1",
|
||||
"metamascara": "^1.1.1",
|
||||
"metamask-logo": "^2.1.2",
|
||||
"mississippi": "^1.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
|
Loading…
Reference in New Issue
Block a user