aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/scripts/lib/auto-faucet.js8
-rw-r--r--app/scripts/lib/buy-eth-url.js19
-rw-r--r--app/scripts/metamask-controller.js19
-rw-r--r--app/scripts/platforms/sw.js24
-rw-r--r--app/scripts/platforms/window.js22
-rw-r--r--mascara/src/background.js8
-rw-r--r--mascara/src/popup.js5
-rw-r--r--ui/app/actions.js8
-rw-r--r--ui/app/components/buy-button-subview.js13
-rw-r--r--ui/app/components/coinbase-form.js2
10 files changed, 97 insertions, 31 deletions
diff --git a/app/scripts/lib/auto-faucet.js b/app/scripts/lib/auto-faucet.js
index 73b73dfe6..1e059cf73 100644
--- a/app/scripts/lib/auto-faucet.js
+++ b/app/scripts/lib/auto-faucet.js
@@ -3,9 +3,11 @@ const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
const env = process.env.METAMASK_ENV
module.exports = function (address) {
- if (METAMASK_DEBUG || env === 'test') return // Don't faucet in development or test
- let data = address
- let headers = new Headers()
+ // Don't faucet in development or test
+ if (METAMASK_DEBUG || env === 'test') return
+ global.log.info('auto-fauceting:', address)
+ const data = address
+ const headers = new Headers()
headers.append('Content-type', 'application/rawdata')
fetch(uri, {
method: 'POST',
diff --git a/app/scripts/lib/buy-eth-url.js b/app/scripts/lib/buy-eth-url.js
new file mode 100644
index 000000000..91a1ec322
--- /dev/null
+++ b/app/scripts/lib/buy-eth-url.js
@@ -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
+} \ No newline at end of file
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index edb9bbbd9..2b8fc9cb8 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -23,6 +23,7 @@ const ConfigManager = require('./lib/config-manager')
const autoFaucet = require('./lib/auto-faucet')
const nodeify = require('./lib/nodeify')
const accountImporter = require('./account-import-strategies')
+const getBuyEthUrl = require('./lib/buy-eth-url')
const version = require('../manifest.json').version
@@ -614,24 +615,8 @@ module.exports = class MetamaskController extends EventEmitter {
buyEth (address, amount) {
if (!amount) amount = '5'
-
const network = this.getNetworkState()
- 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
- }
-
+ const url = getBuyEthUrl({ network, address, amount })
if (url) this.platform.openWindow({ url })
}
diff --git a/app/scripts/platforms/sw.js b/app/scripts/platforms/sw.js
new file mode 100644
index 000000000..007d8dc5b
--- /dev/null
+++ b/app/scripts/platforms/sw.js
@@ -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
diff --git a/app/scripts/platforms/window.js b/app/scripts/platforms/window.js
new file mode 100644
index 000000000..1527c008b
--- /dev/null
+++ b/app/scripts/platforms/window.js
@@ -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
diff --git a/mascara/src/background.js b/mascara/src/background.js
index 6f9fb3d13..957570050 100644
--- a/mascara/src/background.js
+++ b/mascara/src/background.js
@@ -8,6 +8,7 @@ const PortStream = require('../../app/scripts/lib/port-stream.js')
const DbController = require('./lib/index-db-controller')
+const SwPlatform = require('../../app/scripts/platforms/sw')
const MetamaskController = require('../../app/scripts/metamask-controller')
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 STORAGE_KEY = 'metamask-config'
-const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
+// const METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
+const METAMASK_DEBUG = true
let popupIsOpen = false
const log = require('loglevel')
@@ -70,7 +72,11 @@ function setupController (initState, client) {
// MetaMask Controller
//
+ const platform = new SwPlatform()
+
const controller = new MetamaskController({
+ // platform specific implementation
+ platform,
// User confirmation callbacks:
showUnconfirmedMessage: noop,
unlockAccountMessage: noop,
diff --git a/mascara/src/popup.js b/mascara/src/popup.js
index ef7759a81..b740e81a5 100644
--- a/mascara/src/popup.js
+++ b/mascara/src/popup.js
@@ -4,8 +4,13 @@ const SwStream = require('sw-stream/lib/sw-stream.js')
const MetaMaskUiCss = require('../../ui/css')
const setupIframe = require('./lib/setup-iframe.js')
const MetamaskInpageProvider = require('../../app/scripts/lib/inpage-provider.js')
+const MetamascaraPlatform = require('../../app/scripts/platforms/window')
const startPopup = require('../../app/scripts/popup-core')
+// create platform global
+global.platform = new MetamascaraPlatform()
+
+
var css = MetaMaskUiCss()
injectCss(css)
const container = document.getElementById('app-content')
diff --git a/ui/app/actions.js b/ui/app/actions.js
index 60b4c6f03..8934299e7 100644
--- a/ui/app/actions.js
+++ b/ui/app/actions.js
@@ -1,3 +1,5 @@
+const getBuyEthUrl = require('../../app/scripts/lib/buy-eth-url')
+
var actions = {
_setBackgroundConnection: _setBackgroundConnection,
@@ -833,10 +835,10 @@ function showSendPage () {
}
}
-function buyEth (address, amount) {
+function buyEth (opts) {
return (dispatch) => {
- log.debug(`background.buyEth`)
- background.buyEth(address, amount)
+ const url = getBuyEthUrl(opts)
+ global.platform.openWindow({ url })
dispatch({
type: actions.BUY_ETH,
})
diff --git a/ui/app/components/buy-button-subview.js b/ui/app/components/buy-button-subview.js
index 2b1675b6d..6810303e1 100644
--- a/ui/app/components/buy-button-subview.js
+++ b/ui/app/components/buy-button-subview.js
@@ -104,7 +104,8 @@ BuyButtonSubview.prototype.render = function () {
}
BuyButtonSubview.prototype.formVersionSubview = function () {
- if (this.props.network === '1') {
+ const network = this.props.network
+ if (network === '1') {
if (this.props.buyView.formView.coinbase) {
return h(CoinbaseForm, this.props)
} else if (this.props.buyView.formView.shapeshift) {
@@ -123,15 +124,15 @@ BuyButtonSubview.prototype.formVersionSubview = function () {
marginBottom: '15px',
},
}, '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,
- (this.props.network === '3') ? h('button.text-transform-uppercase', {
- onClick: () => this.props.dispatch(actions.buyEth()),
+ ((network === '3') || (network === '42')) ? h('h3.text-transform-uppercase', 'or go to the') : null,
+ (network === '3') ? h('button.text-transform-uppercase', {
+ onClick: () => this.props.dispatch(actions.buyEth({ network })),
style: {
marginTop: '15px',
},
}, 'Ropsten Test Faucet') : null,
- (this.props.network === '42') ? h('button.text-transform-uppercase', {
- onClick: () => this.props.dispatch(actions.buyEth()),
+ (network === '42') ? h('button.text-transform-uppercase', {
+ onClick: () => this.props.dispatch(actions.buyEth({ network })),
style: {
marginTop: '15px',
},
diff --git a/ui/app/components/coinbase-form.js b/ui/app/components/coinbase-form.js
index 40f5719bb..fd5816a21 100644
--- a/ui/app/components/coinbase-form.js
+++ b/ui/app/components/coinbase-form.js
@@ -112,7 +112,7 @@ CoinbaseForm.prototype.toCoinbase = function () {
var message
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) {
message = isValidAmountforCoinBase(amount).message
return props.dispatch(actions.displayWarning(message))