1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00

add platforms to mascara + move buyEther window open to ui

This commit is contained in:
kumavis 2017-04-04 18:23:46 -07:00
parent 5d967eeebb
commit 5a91adf7d8
10 changed files with 97 additions and 31 deletions

View File

@ -3,9 +3,11 @@ const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
const env = process.env.METAMASK_ENV const env = process.env.METAMASK_ENV
module.exports = function (address) { module.exports = function (address) {
if (METAMASK_DEBUG || env === 'test') return // Don't faucet in development or test // Don't faucet in development or test
let data = address if (METAMASK_DEBUG || env === 'test') return
let headers = new Headers() global.log.info('auto-fauceting:', address)
const data = address
const headers = new Headers()
headers.append('Content-type', 'application/rawdata') headers.append('Content-type', 'application/rawdata')
fetch(uri, { fetch(uri, {
method: 'POST', method: 'POST',

View File

@ -0,0 +1,19 @@
module.exports = getBuyEthUrl
function getBuyEthUrl({ network, amount, address }){
let url
switch (network) {
case '1':
url = `https://buy.coinbase.com/?code=9ec56d01-7e81-5017-930c-513daa27bb6a&amount=${amount}&address=${address}&crypto_currency=ETH`
break
case '3':
url = 'https://faucet.metamask.io/'
break
case '42':
url = 'https://github.com/kovan-testnet/faucet'
break
}
return url
}

View File

@ -23,6 +23,7 @@ const ConfigManager = require('./lib/config-manager')
const autoFaucet = require('./lib/auto-faucet') const autoFaucet = require('./lib/auto-faucet')
const nodeify = require('./lib/nodeify') const nodeify = require('./lib/nodeify')
const accountImporter = require('./account-import-strategies') const accountImporter = require('./account-import-strategies')
const getBuyEthUrl = require('./lib/buy-eth-url')
const version = require('../manifest.json').version const version = require('../manifest.json').version
@ -614,24 +615,8 @@ module.exports = class MetamaskController extends EventEmitter {
buyEth (address, amount) { buyEth (address, amount) {
if (!amount) amount = '5' if (!amount) amount = '5'
const network = this.getNetworkState() const network = this.getNetworkState()
let url const url = getBuyEthUrl({ network, address, amount })
switch (network) {
case '1':
url = `https://buy.coinbase.com/?code=9ec56d01-7e81-5017-930c-513daa27bb6a&amount=${amount}&address=${address}&crypto_currency=ETH`
break
case '3':
url = 'https://faucet.metamask.io/'
break
case '42':
url = 'https://github.com/kovan-testnet/faucet'
break
}
if (url) this.platform.openWindow({ url }) if (url) this.platform.openWindow({ url })
} }

View File

@ -0,0 +1,24 @@
class SwPlatform {
//
// Public
//
reload () {
// you cant actually do this
global.location.reload()
}
openWindow ({ url }) {
// this doesnt actually work
global.open(url, '_blank')
}
getVersion () {
return '<unable to read version>'
}
}
module.exports = SwPlatform

View File

@ -0,0 +1,22 @@
class WindowPlatform {
//
// Public
//
reload () {
global.location.reload()
}
openWindow ({ url }) {
global.open(url, '_blank')
}
getVersion () {
return '<unable to read version>'
}
}
module.exports = WindowPlatform

View File

@ -8,6 +8,7 @@ const PortStream = require('../../app/scripts/lib/port-stream.js')
const DbController = require('./lib/index-db-controller') const DbController = require('./lib/index-db-controller')
const SwPlatform = require('../../app/scripts/platforms/sw')
const MetamaskController = require('../../app/scripts/metamask-controller') const MetamaskController = require('../../app/scripts/metamask-controller')
const extension = {} //require('../../app/scripts/lib/extension') const extension = {} //require('../../app/scripts/lib/extension')
@ -17,7 +18,8 @@ const migrations = require('../../app/scripts/migrations/')
const firstTimeState = require('../../app/scripts/first-time-state') const firstTimeState = require('../../app/scripts/first-time-state')
const STORAGE_KEY = 'metamask-config' const STORAGE_KEY = 'metamask-config'
const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG' // const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
const METAMASK_DEBUG = true
let popupIsOpen = false let popupIsOpen = false
const log = require('loglevel') const log = require('loglevel')
@ -70,7 +72,11 @@ function setupController (initState, client) {
// MetaMask Controller // MetaMask Controller
// //
const platform = new SwPlatform()
const controller = new MetamaskController({ const controller = new MetamaskController({
// platform specific implementation
platform,
// User confirmation callbacks: // User confirmation callbacks:
showUnconfirmedMessage: noop, showUnconfirmedMessage: noop,
unlockAccountMessage: noop, unlockAccountMessage: noop,

View File

@ -4,8 +4,13 @@ const SwStream = require('sw-stream/lib/sw-stream.js')
const MetaMaskUiCss = require('../../ui/css') const MetaMaskUiCss = require('../../ui/css')
const setupIframe = require('./lib/setup-iframe.js') const setupIframe = require('./lib/setup-iframe.js')
const MetamaskInpageProvider = require('../../app/scripts/lib/inpage-provider.js') const MetamaskInpageProvider = require('../../app/scripts/lib/inpage-provider.js')
const MetamascaraPlatform = require('../../app/scripts/platforms/window')
const startPopup = require('../../app/scripts/popup-core') const startPopup = require('../../app/scripts/popup-core')
// create platform global
global.platform = new MetamascaraPlatform()
var css = MetaMaskUiCss() var css = MetaMaskUiCss()
injectCss(css) injectCss(css)
const container = document.getElementById('app-content') const container = document.getElementById('app-content')

View File

@ -1,3 +1,5 @@
const getBuyEthUrl = require('../../app/scripts/lib/buy-eth-url')
var actions = { var actions = {
_setBackgroundConnection: _setBackgroundConnection, _setBackgroundConnection: _setBackgroundConnection,
@ -833,10 +835,10 @@ function showSendPage () {
} }
} }
function buyEth (address, amount) { function buyEth (opts) {
return (dispatch) => { return (dispatch) => {
log.debug(`background.buyEth`) const url = getBuyEthUrl(opts)
background.buyEth(address, amount) global.platform.openWindow({ url })
dispatch({ dispatch({
type: actions.BUY_ETH, type: actions.BUY_ETH,
}) })

View File

@ -104,7 +104,8 @@ BuyButtonSubview.prototype.render = function () {
} }
BuyButtonSubview.prototype.formVersionSubview = function () { BuyButtonSubview.prototype.formVersionSubview = function () {
if (this.props.network === '1') { const network = this.props.network
if (network === '1') {
if (this.props.buyView.formView.coinbase) { if (this.props.buyView.formView.coinbase) {
return h(CoinbaseForm, this.props) return h(CoinbaseForm, this.props)
} else if (this.props.buyView.formView.shapeshift) { } else if (this.props.buyView.formView.shapeshift) {
@ -123,15 +124,15 @@ BuyButtonSubview.prototype.formVersionSubview = function () {
marginBottom: '15px', marginBottom: '15px',
}, },
}, 'In order to access this feature, please switch to the Main Network'), }, 'In order to access this feature, please switch to the Main Network'),
((this.props.network === '3') || (this.props.network === '42')) ? h('h3.text-transform-uppercase', 'or go to the') : null, ((network === '3') || (network === '42')) ? h('h3.text-transform-uppercase', 'or go to the') : null,
(this.props.network === '3') ? h('button.text-transform-uppercase', { (network === '3') ? h('button.text-transform-uppercase', {
onClick: () => this.props.dispatch(actions.buyEth()), onClick: () => this.props.dispatch(actions.buyEth({ network })),
style: { style: {
marginTop: '15px', marginTop: '15px',
}, },
}, 'Ropsten Test Faucet') : null, }, 'Ropsten Test Faucet') : null,
(this.props.network === '42') ? h('button.text-transform-uppercase', { (network === '42') ? h('button.text-transform-uppercase', {
onClick: () => this.props.dispatch(actions.buyEth()), onClick: () => this.props.dispatch(actions.buyEth({ network })),
style: { style: {
marginTop: '15px', marginTop: '15px',
}, },

View File

@ -112,7 +112,7 @@ CoinbaseForm.prototype.toCoinbase = function () {
var message var message
if (isValidAddress(address) && isValidAmountforCoinBase(amount).valid) { if (isValidAddress(address) && isValidAmountforCoinBase(amount).valid) {
props.dispatch(actions.buyEth(address, props.buyView.amount)) props.dispatch(actions.buyEth({ network: '1', address, amount: props.buyView.amount }))
} else if (!isValidAmountforCoinBase(amount).valid) { } else if (!isValidAmountforCoinBase(amount).valid) {
message = isValidAmountforCoinBase(amount).message message = isValidAmountforCoinBase(amount).message
return props.dispatch(actions.displayWarning(message)) return props.dispatch(actions.displayWarning(message))