mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Change buy forms so that they are their own view and add Qr-code
This commit is contained in:
parent
2fc26fb264
commit
b4c9a52259
@ -172,7 +172,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
h('button', {
|
h('button', {
|
||||||
onClick: this.buyButtonDeligator.bind(this),
|
onClick: () => props.dispatch(actions.buyEthView(selected)),
|
||||||
style: {
|
style: {
|
||||||
marginBottom: '20px',
|
marginBottom: '20px',
|
||||||
marginRight: '8px',
|
marginRight: '8px',
|
||||||
@ -264,6 +264,6 @@ AccountDetailScreen.prototype.buyButtonDeligator = function () {
|
|||||||
if (this.props.accountDetail.subview === 'buyForm') {
|
if (this.props.accountDetail.subview === 'buyForm') {
|
||||||
props.dispatch(actions.backToAccountDetail(props.address))
|
props.dispatch(actions.backToAccountDetail(props.address))
|
||||||
} else {
|
} else {
|
||||||
props.dispatch(actions.buyEthSubview())
|
props.dispatch(actions.buyEthView())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,8 +113,8 @@ var actions = {
|
|||||||
// buy Eth with coinbase
|
// buy Eth with coinbase
|
||||||
BUY_ETH: 'BUY_ETH',
|
BUY_ETH: 'BUY_ETH',
|
||||||
buyEth: buyEth,
|
buyEth: buyEth,
|
||||||
buyEthSubview: buyEthSubview,
|
buyEthView: buyEthView,
|
||||||
BUY_ETH_SUBVIEW: 'BUY_ETH_SUBVIEW',
|
BUY_ETH_VIEW: 'BUY_ETH_VIEW',
|
||||||
UPDATE_COINBASE_AMOUNT: 'UPDATE_COIBASE_AMOUNT',
|
UPDATE_COINBASE_AMOUNT: 'UPDATE_COIBASE_AMOUNT',
|
||||||
updateCoinBaseAmount: updateCoinBaseAmount,
|
updateCoinBaseAmount: updateCoinBaseAmount,
|
||||||
UPDATE_BUY_ADDRESS: 'UPDATE_BUY_ADDRESS',
|
UPDATE_BUY_ADDRESS: 'UPDATE_BUY_ADDRESS',
|
||||||
@ -125,12 +125,14 @@ var actions = {
|
|||||||
shapeShiftSubview: shapeShiftSubview,
|
shapeShiftSubview: shapeShiftSubview,
|
||||||
PAIR_UPDATE: 'PAIR_UPDATE',
|
PAIR_UPDATE: 'PAIR_UPDATE',
|
||||||
pairUpdate: pairUpdate,
|
pairUpdate: pairUpdate,
|
||||||
COIN_SHIFT_REQUEST: 'COIN_SHIFT_REQUEST',
|
|
||||||
coinShiftRquest: coinShiftRquest,
|
coinShiftRquest: coinShiftRquest,
|
||||||
SHOW_SUB_LOADING_INDICATION: 'SHOW_SUB_LOADING_INDICATION',
|
SHOW_SUB_LOADING_INDICATION: 'SHOW_SUB_LOADING_INDICATION',
|
||||||
showSubLoadingIndication: showSubLoadingIndication,
|
showSubLoadingIndication: showSubLoadingIndication,
|
||||||
HIDE_SUB_LOADING_INDICATION: 'HIDE_SUB_LOADING_INDICATION',
|
HIDE_SUB_LOADING_INDICATION: 'HIDE_SUB_LOADING_INDICATION',
|
||||||
hideSubLoadingIndication: hideSubLoadingIndication,
|
hideSubLoadingIndication: hideSubLoadingIndication,
|
||||||
|
// QR STUFF:
|
||||||
|
SHOW_QR: 'SHOW_QR',
|
||||||
|
getQr: getQr,
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = actions
|
module.exports = actions
|
||||||
@ -625,9 +627,10 @@ function buyEth (address, amount) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function buyEthSubview () {
|
function buyEthView (address) {
|
||||||
return {
|
return {
|
||||||
type: actions.BUY_ETH_SUBVIEW,
|
type: actions.BUY_ETH_VIEW,
|
||||||
|
value: address,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,19 +694,32 @@ function shapeShiftSubview (network) {
|
|||||||
|
|
||||||
function coinShiftRquest (data) {
|
function coinShiftRquest (data) {
|
||||||
return (dispatch) => {
|
return (dispatch) => {
|
||||||
dispatch(actions.showSubLoadingIndication())
|
dispatch(actions.showLoadingIndication())
|
||||||
shapeShiftRequest('shift', { method: 'POST', data}, (response) => {
|
shapeShiftRequest('shift', { method: 'POST', data}, (response) => {
|
||||||
dispatch(actions.hideSubLoadingIndication())
|
if (response.error) return dispatch(actions.showWarning(response.error))
|
||||||
|
var message = `Deposit your ${response.depositType} to the address bellow:`
|
||||||
|
dispatch(actions.getQr(response.deposit, '125x125', message))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getQr (data, size, message) {
|
||||||
|
return (dispatch) => {
|
||||||
|
qrRequest(data, size, (response) => {
|
||||||
|
dispatch(actions.hideLoadingIndication())
|
||||||
if (response.error) return dispatch(actions.showWarning(response.error))
|
if (response.error) return dispatch(actions.showWarning(response.error))
|
||||||
dispatch({
|
dispatch({
|
||||||
type: actions.COIN_SHIFT_REQUEST,
|
type: actions.SHOW_QR,
|
||||||
value: {
|
value: {
|
||||||
response: response,
|
qr: response,
|
||||||
|
message: message,
|
||||||
|
data: data,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function shapeShiftRequest (query, options, cb) {
|
function shapeShiftRequest (query, options, cb) {
|
||||||
var queryResponse, method
|
var queryResponse, method
|
||||||
!options ? options = {} : null
|
!options ? options = {} : null
|
||||||
@ -727,3 +743,15 @@ function shapeShiftRequest (query, options, cb) {
|
|||||||
return shapShiftReq.send()
|
return shapShiftReq.send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function qrRequest (data, size, cb) {
|
||||||
|
var requestListner = function (request) {
|
||||||
|
cb ? cb(this.responseText) : null
|
||||||
|
return this.responseText
|
||||||
|
}
|
||||||
|
|
||||||
|
var qrReq = new XMLHttpRequest()
|
||||||
|
qrReq.addEventListener('load', requestListner)
|
||||||
|
qrReq.open('GET', `https://api.qrserver.com/v1/create-qr-code/?size=${size}&format=svg&data=${data}`, true)
|
||||||
|
qrReq.send()
|
||||||
|
}
|
||||||
|
@ -28,7 +28,7 @@ const DropMenuItem = require('./components/drop-menu-item')
|
|||||||
const NetworkIndicator = require('./components/network')
|
const NetworkIndicator = require('./components/network')
|
||||||
const Tooltip = require('./components/tooltip')
|
const Tooltip = require('./components/tooltip')
|
||||||
const EthStoreWarning = require('./eth-store-warning')
|
const EthStoreWarning = require('./eth-store-warning')
|
||||||
|
const BuyView = require('./components/buy-button-subview')
|
||||||
module.exports = connect(mapStateToProps)(App)
|
module.exports = connect(mapStateToProps)(App)
|
||||||
|
|
||||||
inherits(App, Component)
|
inherits(App, Component)
|
||||||
@ -366,6 +366,8 @@ App.prototype.renderPrimary = function () {
|
|||||||
|
|
||||||
case 'createVault':
|
case 'createVault':
|
||||||
return h(CreateVaultScreen, {key: 'createVault'})
|
return h(CreateVaultScreen, {key: 'createVault'})
|
||||||
|
case 'buyEth':
|
||||||
|
return h(BuyView, {key: 'buyEthView'})
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return h(AccountDetailScreen, {key: 'account-detail'})
|
return h(AccountDetailScreen, {key: 'account-detail'})
|
||||||
|
@ -5,6 +5,7 @@ const connect = require('react-redux').connect
|
|||||||
const actions = require('../actions')
|
const actions = require('../actions')
|
||||||
const CoinbaseForm = require('./coinbase-form')
|
const CoinbaseForm = require('./coinbase-form')
|
||||||
const ShapeshiftForm = require('./shapeshift-form')
|
const ShapeshiftForm = require('./shapeshift-form')
|
||||||
|
const extension = require('../../../app/scripts/lib/extension')
|
||||||
|
|
||||||
module.exports = connect(mapStateToProps)(BuyButtonSubview)
|
module.exports = connect(mapStateToProps)(BuyButtonSubview)
|
||||||
|
|
||||||
@ -12,6 +13,7 @@ function mapStateToProps (state) {
|
|||||||
return {
|
return {
|
||||||
selectedAccount: state.selectedAccount,
|
selectedAccount: state.selectedAccount,
|
||||||
warning: state.appState.warning,
|
warning: state.appState.warning,
|
||||||
|
buyView: state.appState.buyView,
|
||||||
network: state.metamask.network,
|
network: state.metamask.network,
|
||||||
provider: state.metamask.provider,
|
provider: state.metamask.provider,
|
||||||
}
|
}
|
||||||
@ -24,10 +26,26 @@ function BuyButtonSubview () {
|
|||||||
|
|
||||||
BuyButtonSubview.prototype.render = function () {
|
BuyButtonSubview.prototype.render = function () {
|
||||||
const props = this.props
|
const props = this.props
|
||||||
const currentForm = props.accountDetail.formView
|
const currentForm = props.buyView.formView
|
||||||
|
|
||||||
return (
|
return (
|
||||||
h('span', {key: 'buyForm'}, [
|
h('.buy-eth-section', [
|
||||||
|
// back button
|
||||||
|
h('.flex-row', {
|
||||||
|
style: {
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
},
|
||||||
|
}, [
|
||||||
|
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', {
|
||||||
|
onClick: () => props.dispatch(actions.backToAccountDetail(props.selectedAccount)),
|
||||||
|
style: {
|
||||||
|
position: 'absolute',
|
||||||
|
left: '10px',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
h('h2.page-subtitle', 'Buy Eth'),
|
||||||
|
]),
|
||||||
h('h3.flex-row.text-transform-uppercase', {
|
h('h3.flex-row.text-transform-uppercase', {
|
||||||
style: {
|
style: {
|
||||||
background: '#EBEBEB',
|
background: '#EBEBEB',
|
||||||
@ -39,9 +57,31 @@ BuyButtonSubview.prototype.render = function () {
|
|||||||
h(currentForm.coinbase ? '.activeForm' : '.inactiveForm', {
|
h(currentForm.coinbase ? '.activeForm' : '.inactiveForm', {
|
||||||
onClick: () => props.dispatch(actions.coinBaseSubview()),
|
onClick: () => props.dispatch(actions.coinBaseSubview()),
|
||||||
}, 'Coinbase'),
|
}, 'Coinbase'),
|
||||||
|
h('a', {
|
||||||
|
onClick: (event) => this.navigateTo('https://github.com/MetaMask/faq/blob/master/COINBASE.md'),
|
||||||
|
}, [
|
||||||
|
h('i.fa.fa-question-circle', {
|
||||||
|
style: {
|
||||||
|
position: 'relative',
|
||||||
|
right: '33px',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]),
|
||||||
h(currentForm.shapeshift ? '.activeForm' : '.inactiveForm', {
|
h(currentForm.shapeshift ? '.activeForm' : '.inactiveForm', {
|
||||||
onClick: () => props.dispatch(actions.shapeShiftSubview(props.provider.type)),
|
onClick: () => props.dispatch(actions.shapeShiftSubview(props.provider.type)),
|
||||||
}, 'Shapeshift'),
|
}, 'Shapeshift'),
|
||||||
|
|
||||||
|
h('a', {
|
||||||
|
href: 'https://github.com/MetaMask/faq/blob/master/COINBASE.md',
|
||||||
|
onClick: (event) => this.navigateTo('https://info.shapeshift.io/about'),
|
||||||
|
}, [
|
||||||
|
h('i.fa.fa-question-circle', {
|
||||||
|
style: {
|
||||||
|
position: 'relative',
|
||||||
|
right: '28px',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]),
|
||||||
]),
|
]),
|
||||||
this.formVersionSubview(),
|
this.formVersionSubview(),
|
||||||
])
|
])
|
||||||
@ -50,9 +90,9 @@ BuyButtonSubview.prototype.render = function () {
|
|||||||
|
|
||||||
BuyButtonSubview.prototype.formVersionSubview = function () {
|
BuyButtonSubview.prototype.formVersionSubview = function () {
|
||||||
if (this.props.network === '1') {
|
if (this.props.network === '1') {
|
||||||
if (this.props.accountDetail.formView.coinbase) {
|
if (this.props.buyView.formView.coinbase) {
|
||||||
return h(CoinbaseForm, this.props)
|
return h(CoinbaseForm, this.props)
|
||||||
} else if (this.props.accountDetail.formView.shapeshift) {
|
} else if (this.props.buyView.formView.shapeshift) {
|
||||||
return h(ShapeshiftForm, this.props)
|
return h(ShapeshiftForm, this.props)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -72,3 +112,6 @@ BuyButtonSubview.prototype.formVersionSubview = function () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BuyButtonSubview.prototype.navigateTo = function (url) {
|
||||||
|
extension.tabs.create({ url })
|
||||||
|
}
|
||||||
|
@ -22,12 +22,13 @@ function CoinbaseForm() {
|
|||||||
|
|
||||||
CoinbaseForm.prototype.render = function () {
|
CoinbaseForm.prototype.render = function () {
|
||||||
var props = this.props
|
var props = this.props
|
||||||
var amount = props.accountDetail.amount
|
var amount = props.buyView.amount
|
||||||
var address = props.accountDetail.buyAddress
|
var address = props.buyView.buyAddress
|
||||||
|
|
||||||
return h('.flex-column', {
|
return h('.flex-column', {
|
||||||
style: {
|
style: {
|
||||||
margin: '10px',
|
// margin: '10px',
|
||||||
|
padding: '25px',
|
||||||
},
|
},
|
||||||
}, [
|
}, [
|
||||||
h('.flex-column', {
|
h('.flex-column', {
|
||||||
@ -35,35 +36,10 @@ CoinbaseForm.prototype.render = function () {
|
|||||||
alignItems: 'flex-start',
|
alignItems: 'flex-start',
|
||||||
},
|
},
|
||||||
}, [
|
}, [
|
||||||
h('.flex-column', [
|
h('.flex-row', [
|
||||||
h('div', 'Address:'),
|
h('div', 'Address:'),
|
||||||
h('.input-container', {
|
h('.ellip-address', address),
|
||||||
style: {},
|
|
||||||
}, [
|
|
||||||
h('input.buy-inputs', {
|
|
||||||
type: 'text',
|
|
||||||
style: {
|
|
||||||
boxSizing: 'border-box',
|
|
||||||
width: '317px',
|
|
||||||
height: '20px',
|
|
||||||
padding: ' 12px 0px 12px 1px ',
|
|
||||||
},
|
|
||||||
defaultValue: address,
|
|
||||||
onChange: this.handleAddress.bind(this),
|
|
||||||
}),
|
|
||||||
h('i.fa.fa-pencil-square-o.edit-text', {
|
|
||||||
style: {
|
|
||||||
fontSize: '12px',
|
|
||||||
color: '#F7861C',
|
|
||||||
position: 'relative',
|
|
||||||
bottom: '8px',
|
|
||||||
right: '11px',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
|
|
||||||
]),
|
|
||||||
]),
|
]),
|
||||||
|
|
||||||
h('.flex-row', [
|
h('.flex-row', [
|
||||||
h('div', 'Amount: $'),
|
h('div', 'Amount: $'),
|
||||||
h('.input-container', [
|
h('.input-container', [
|
||||||
@ -119,7 +95,7 @@ CoinbaseForm.prototype.render = function () {
|
|||||||
}, 'Continue to Coinbase'),
|
}, 'Continue to Coinbase'),
|
||||||
|
|
||||||
h('button', {
|
h('button', {
|
||||||
onClick: () => props.dispatch(actions.backToAccountDetail(props.accounts.address)),
|
onClick: () => props.dispatch(actions.backTobuyView(props.accounts.address)),
|
||||||
}, 'Cancel'),
|
}, 'Cancel'),
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
@ -132,12 +108,12 @@ CoinbaseForm.prototype.handleAddress = function (event) {
|
|||||||
}
|
}
|
||||||
CoinbaseForm.prototype.toCoinbase = function () {
|
CoinbaseForm.prototype.toCoinbase = function () {
|
||||||
var props = this.props
|
var props = this.props
|
||||||
var amount = props.accountDetail.amount
|
var amount = props.buyView.amount
|
||||||
var address = props.accountDetail.buyAddress
|
var address = props.buyView.buyAddress
|
||||||
var message
|
var message
|
||||||
|
|
||||||
if (isValidAddress(address) && isValidAmountforCoinBase(amount).valid) {
|
if (isValidAddress(address) && isValidAmountforCoinBase(amount).valid) {
|
||||||
props.dispatch(actions.buyEth(address, props.accountDetail.amount))
|
props.dispatch(actions.buyEth(address, 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.showWarning(message))
|
return props.dispatch(actions.showWarning(message))
|
||||||
|
50
ui/app/components/qr-code.js
Normal file
50
ui/app/components/qr-code.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
const Component = require('react').Component
|
||||||
|
const h = require('react-hyperscript')
|
||||||
|
const inherits = require('util').inherits
|
||||||
|
const connect = require('react-redux').connect
|
||||||
|
const CopyButton = require('./copyButton')
|
||||||
|
|
||||||
|
module.exports = connect(mapStateToProps)(QrCodeView)
|
||||||
|
|
||||||
|
function mapStateToProps (state) {
|
||||||
|
return {
|
||||||
|
Qr: state.appState.Qr,
|
||||||
|
buyView: state.appState.buyView,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inherits(QrCodeView, Component)
|
||||||
|
|
||||||
|
function QrCodeView () {
|
||||||
|
Component.call(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
QrCodeView.prototype.render = function () {
|
||||||
|
var props = this.props
|
||||||
|
var Qr = props.Qr
|
||||||
|
return h('.main-container.flex-column', {
|
||||||
|
style: {
|
||||||
|
justifyContent: 'center',
|
||||||
|
padding: '45px',
|
||||||
|
alignItems: 'center',
|
||||||
|
},
|
||||||
|
}, [
|
||||||
|
h('h3', Qr.message),
|
||||||
|
h('#qr-container.flex-column', {
|
||||||
|
key: 'qr',
|
||||||
|
style: {
|
||||||
|
marginTop: '25px',
|
||||||
|
marginBottom: '15px',
|
||||||
|
},
|
||||||
|
dangerouslySetInnerHTML: {
|
||||||
|
__html: Qr.image,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
h('.flex-row', [
|
||||||
|
h('h3.ellip-address', Qr.data),
|
||||||
|
h(CopyButton, {
|
||||||
|
value: Qr.data,
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
])
|
||||||
|
}
|
@ -2,9 +2,9 @@ const Component = require('react').Component
|
|||||||
const h = require('react-hyperscript')
|
const h = require('react-hyperscript')
|
||||||
const inherits = require('util').inherits
|
const inherits = require('util').inherits
|
||||||
const connect = require('react-redux').connect
|
const connect = require('react-redux').connect
|
||||||
|
const ReactCSSTransitionGroup = require('react-addons-css-transition-group')
|
||||||
const actions = require('../actions')
|
const actions = require('../actions')
|
||||||
const CopyButton = require('./copyButton')
|
const Qr = require('./qr-code')
|
||||||
|
|
||||||
const isValidAddress = require('../util').isValidAddress
|
const isValidAddress = require('../util').isValidAddress
|
||||||
module.exports = connect(mapStateToProps)(ShapeshiftForm)
|
module.exports = connect(mapStateToProps)(ShapeshiftForm)
|
||||||
|
|
||||||
@ -13,23 +13,36 @@ function mapStateToProps(state) {
|
|||||||
selectedAccount: state.selectedAccount,
|
selectedAccount: state.selectedAccount,
|
||||||
warning: state.appState.warning,
|
warning: state.appState.warning,
|
||||||
isSubLoading: state.appState.isSubLoading,
|
isSubLoading: state.appState.isSubLoading,
|
||||||
|
qrRequested: state.appState.qrRequested,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inherits(ShapeshiftForm, Component)
|
inherits(ShapeshiftForm, Component)
|
||||||
|
|
||||||
function ShapeshiftForm() {
|
function ShapeshiftForm () {
|
||||||
Component.call(this)
|
Component.call(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.render = function () {
|
ShapeshiftForm.prototype.render = function () {
|
||||||
const marketinfo = this.props.accountDetail.formView.marketinfo
|
return h(ReactCSSTransitionGroup, {
|
||||||
const coinOptions = this.props.accountDetail.formView.coinOptions
|
className: 'css-transition-group',
|
||||||
|
transitionName: 'main',
|
||||||
|
transitionEnterTimeout: 300,
|
||||||
|
transitionLeaveTimeout: 300,
|
||||||
|
}, [
|
||||||
|
this.props.qrRequested ? h(Qr, {key: 'qr'}) : this.renderMain(),
|
||||||
|
])
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ShapeshiftForm.prototype.renderMain = function () {
|
||||||
|
const marketinfo = this.props.buyView.formView.marketinfo
|
||||||
|
const coinOptions = this.props.buyView.formView.coinOptions
|
||||||
var coin = marketinfo.pair.split('_')[0].toUpperCase()
|
var coin = marketinfo.pair.split('_')[0].toUpperCase()
|
||||||
|
|
||||||
return h('.flex-column', {
|
return h('.flex-column', {
|
||||||
style: {
|
style: {
|
||||||
marginTop: '10px',
|
// marginTop: '10px',
|
||||||
|
padding: '25px',
|
||||||
width: '100%',
|
width: '100%',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
},
|
},
|
||||||
@ -67,8 +80,8 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
fontSize: '12px',
|
fontSize: '12px',
|
||||||
color: '#F7861C',
|
color: '#F7861C',
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
bottom: '23px',
|
bottom: '48px',
|
||||||
right: '11px',
|
left: '106px',
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
@ -78,7 +91,7 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
style: {
|
style: {
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
bottom: '5px',
|
bottom: '5px',
|
||||||
right: '5px',
|
left: '5px',
|
||||||
color: '#F7861C',
|
color: '#F7861C',
|
||||||
},
|
},
|
||||||
onClick: this.updateCoin.bind(this),
|
onClick: this.updateCoin.bind(this),
|
||||||
@ -86,8 +99,8 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
h('i.fa.fa-chevron-right.fa-4.orange', {
|
h('i.fa.fa-chevron-right.fa-4.orange', {
|
||||||
style: {
|
style: {
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
bottom: '5px',
|
bottom: '26px',
|
||||||
right: '15px',
|
left: '10px',
|
||||||
color: '#F7861C',
|
color: '#F7861C',
|
||||||
},
|
},
|
||||||
onClick: this.updateCoin.bind(this),
|
onClick: this.updateCoin.bind(this),
|
||||||
@ -107,7 +120,6 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
]),
|
]),
|
||||||
|
|
||||||
this.props.isSubLoading ? this.renderLoading() : null,
|
this.props.isSubLoading ? this.renderLoading() : null,
|
||||||
|
|
||||||
h('.flex-column', {
|
h('.flex-column', {
|
||||||
style: {
|
style: {
|
||||||
width: '235px',
|
width: '235px',
|
||||||
@ -124,40 +136,21 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
this.props.warning) : this.renderInfo(),
|
this.props.warning) : this.renderInfo(),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
h(this.activeToggle('.input-container'), {
|
h('.flex-row', {
|
||||||
style: {
|
style: {
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
paddingBottom: '0px',
|
paddingBottom: '2px',
|
||||||
width: '100%',
|
width: '100%',
|
||||||
},
|
},
|
||||||
}, [
|
}, [
|
||||||
h('div', 'Receiving address:'),
|
h('div', 'Receiving address:'),
|
||||||
|
h('.ellip-address', this.props.buyView.buyAddress),
|
||||||
h('input.buy-inputs', {
|
|
||||||
type: 'text',
|
|
||||||
value: this.props.accountDetail.buyAddress,
|
|
||||||
onChange: this.handleAddress.bind(this),
|
|
||||||
style: {
|
|
||||||
boxSizing: 'border-box',
|
|
||||||
width: '325px',
|
|
||||||
height: '20px',
|
|
||||||
padding: ' 5px ',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
|
|
||||||
h('i.fa.fa-pencil-square-o.edit-text', {
|
|
||||||
style: {
|
|
||||||
fontSize: '12px',
|
|
||||||
color: '#F7861C',
|
|
||||||
position: 'relative',
|
|
||||||
bottom: '5px',
|
|
||||||
right: '11px',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
]),
|
]),
|
||||||
|
|
||||||
h(this.activeToggle('.input-container'), {
|
h(this.activeToggle('.input-container'), {
|
||||||
style: {
|
style: {
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
|
paddingTop: '0px',
|
||||||
width: '100%',
|
width: '100%',
|
||||||
},
|
},
|
||||||
}, [
|
}, [
|
||||||
@ -168,7 +161,7 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
placeholder: `Your ${coin} Refund Address`,
|
placeholder: `Your ${coin} Refund Address`,
|
||||||
style: {
|
style: {
|
||||||
boxSizing: 'border-box',
|
boxSizing: 'border-box',
|
||||||
width: '235px',
|
width: '278px',
|
||||||
height: '20px',
|
height: '20px',
|
||||||
padding: ' 5px ',
|
padding: ' 5px ',
|
||||||
},
|
},
|
||||||
@ -183,19 +176,27 @@ ShapeshiftForm.prototype.render = function () {
|
|||||||
right: '11px',
|
right: '11px',
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
h('.flex-row', {
|
||||||
h('button', {
|
style: {
|
||||||
onClick: this.shift.bind(this),
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
'Submit'),
|
}, [
|
||||||
|
h('button', {
|
||||||
|
onClick: this.shift.bind(this),
|
||||||
|
style: {
|
||||||
|
marginTop: '10px',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'Submit'),
|
||||||
|
]),
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.shift = function () {
|
ShapeshiftForm.prototype.shift = function () {
|
||||||
var withdrawal = this.props.accountDetail.buyAddress
|
var withdrawal = this.props.buyView.buyAddress
|
||||||
var returnAddress = document.getElementById('fromCoinAddress').value
|
var returnAddress = document.getElementById('fromCoinAddress').value
|
||||||
var pair = this.props.accountDetail.formView.marketinfo.pair
|
var pair = this.props.buyView.formView.marketinfo.pair
|
||||||
var data = {
|
var data = {
|
||||||
'withdrawal': withdrawal,
|
'withdrawal': withdrawal,
|
||||||
'pair': pair,
|
'pair': pair,
|
||||||
@ -208,7 +209,7 @@ ShapeshiftForm.prototype.shift = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.renderCoinList = function () {
|
ShapeshiftForm.prototype.renderCoinList = function () {
|
||||||
var list = Object.keys(this.props.accountDetail.formView.coinOptions).map((item) => {
|
var list = Object.keys(this.props.buyView.formView.coinOptions).map((item) => {
|
||||||
return h('option', {
|
return h('option', {
|
||||||
value: item,
|
value: item,
|
||||||
}, item)
|
}, item)
|
||||||
@ -224,7 +225,7 @@ ShapeshiftForm.prototype.renderCoinList = function () {
|
|||||||
ShapeshiftForm.prototype.updateCoin = function (event) {
|
ShapeshiftForm.prototype.updateCoin = function (event) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
const props = this.props
|
const props = this.props
|
||||||
var coinOptions = this.props.accountDetail.formView.coinOptions
|
var coinOptions = this.props.buyView.formView.coinOptions
|
||||||
var coin = document.getElementById('fromCoin').value
|
var coin = document.getElementById('fromCoin').value
|
||||||
|
|
||||||
if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') {
|
if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') {
|
||||||
@ -237,7 +238,7 @@ ShapeshiftForm.prototype.updateCoin = function (event) {
|
|||||||
|
|
||||||
ShapeshiftForm.prototype.handleLiveInput = function () {
|
ShapeshiftForm.prototype.handleLiveInput = function () {
|
||||||
const props = this.props
|
const props = this.props
|
||||||
var coinOptions = this.props.accountDetail.formView.coinOptions
|
var coinOptions = this.props.buyView.formView.coinOptions
|
||||||
var coin = document.getElementById('fromCoin').value
|
var coin = document.getElementById('fromCoin').value
|
||||||
|
|
||||||
if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') {
|
if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') {
|
||||||
@ -248,61 +249,30 @@ ShapeshiftForm.prototype.handleLiveInput = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.renderInfo = function () {
|
ShapeshiftForm.prototype.renderInfo = function () {
|
||||||
const marketinfo = this.props.accountDetail.formView.marketinfo
|
const marketinfo = this.props.buyView.formView.marketinfo
|
||||||
const coinOptions = this.props.accountDetail.formView.coinOptions
|
const coinOptions = this.props.buyView.formView.coinOptions
|
||||||
var coin = marketinfo.pair.split('_')[0].toUpperCase()
|
var coin = marketinfo.pair.split('_')[0].toUpperCase()
|
||||||
const request = this.props.accountDetail.formView.response
|
|
||||||
|
|
||||||
if (!request) {
|
return h('span', {
|
||||||
return h('span', [
|
style: {
|
||||||
h('h3.flex-row.text-transform-uppercase', {
|
marginTop: '15px',
|
||||||
style: {
|
marginBottom: '15px',
|
||||||
color: '#AEAEAE',
|
},
|
||||||
paddingTop: '4px',
|
}, [
|
||||||
justifyContent: 'space-around',
|
h('h3.flex-row.text-transform-uppercase', {
|
||||||
textAlign: 'center',
|
|
||||||
fontSize: '14px',
|
|
||||||
},
|
|
||||||
}, `Market Info for ${marketinfo.pair.replace('_', ' to ').toUpperCase()}:`),
|
|
||||||
h('.marketinfo', ['Status : ', `${coinOptions[coin].status}`]),
|
|
||||||
h('.marketinfo', ['Exchange Rate: ', `${marketinfo.rate}`]),
|
|
||||||
h('.marketinfo', ['Limit: ', `${marketinfo.limit}`]),
|
|
||||||
h('.marketinfo', ['Minimum : ', `${marketinfo.minimum}`]),
|
|
||||||
])
|
|
||||||
} else {
|
|
||||||
return h('.flex-column', {
|
|
||||||
style: {
|
style: {
|
||||||
width: '229px',
|
color: '#AEAEAE',
|
||||||
height: '82px',
|
paddingTop: '4px',
|
||||||
|
justifyContent: 'space-around',
|
||||||
|
textAlign: 'center',
|
||||||
|
fontSize: '14px',
|
||||||
},
|
},
|
||||||
}, [
|
}, `Market Info for ${marketinfo.pair.replace('_', ' to ').toUpperCase()}:`),
|
||||||
h('.marketinfo', ['Limit: ', `${marketinfo.limit}`]),
|
h('.marketinfo', ['Status : ', `${coinOptions[coin].status}`]),
|
||||||
h('.marketinfo', ['Minimum : ', `${marketinfo.minimum}`]),
|
h('.marketinfo', ['Exchange Rate: ', `${marketinfo.rate}`]),
|
||||||
h('div', {
|
h('.marketinfo', ['Limit: ', `${marketinfo.limit}`]),
|
||||||
style: {
|
h('.marketinfo', ['Minimum : ', `${marketinfo.minimum}`]),
|
||||||
fontSize: '12px',
|
])
|
||||||
lineHeight: '16px',
|
|
||||||
marginTop: '4px',
|
|
||||||
color: '#F7861C',
|
|
||||||
},
|
|
||||||
}, `Deposit your ${request.depositType} to the address bellow:`),
|
|
||||||
h('.flex-row', {
|
|
||||||
style: {
|
|
||||||
position: 'relative',
|
|
||||||
right: '38px',
|
|
||||||
},
|
|
||||||
}, [
|
|
||||||
h('div', {
|
|
||||||
style: {
|
|
||||||
fontSize: '13px',
|
|
||||||
},
|
|
||||||
}, request.deposit),
|
|
||||||
h(CopyButton, {
|
|
||||||
value: request.deposit,
|
|
||||||
}),
|
|
||||||
]),
|
|
||||||
])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.handleAddress = function (event) {
|
ShapeshiftForm.prototype.handleAddress = function (event) {
|
||||||
@ -310,7 +280,7 @@ ShapeshiftForm.prototype.handleAddress = function (event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShapeshiftForm.prototype.activeToggle = function (elementType) {
|
ShapeshiftForm.prototype.activeToggle = function (elementType) {
|
||||||
if (!this.props.accountDetail.formView.response || this.props.warning) return elementType
|
if (!this.props.buyView.formView.response || this.props.warning) return elementType
|
||||||
return `${elementType}.inactive`
|
return `${elementType}.inactive`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +289,7 @@ ShapeshiftForm.prototype.renderLoading = function () {
|
|||||||
style: {
|
style: {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
left: '70px',
|
left: '70px',
|
||||||
bottom: '138px',
|
bottom: '194px',
|
||||||
background: 'transparent',
|
background: 'transparent',
|
||||||
width: '229px',
|
width: '229px',
|
||||||
height: '82px',
|
height: '82px',
|
||||||
|
@ -573,3 +573,12 @@ input.large-input {
|
|||||||
background: #AEAEAE;
|
background: #AEAEAE;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ellip-address {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 5em;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Montserrat Light";
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
@ -378,17 +378,17 @@ function reduceApp (state, action) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.BUY_ETH_SUBVIEW:
|
case actions.BUY_ETH_VIEW:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
transForward: true,
|
transForward: true,
|
||||||
currentView: {
|
currentView: {
|
||||||
name: 'accountDetail',
|
name: 'buyEth',
|
||||||
context: appState.currentView.context,
|
context: appState.currentView.context,
|
||||||
},
|
},
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
amount: '5.00',
|
amount: '5.00',
|
||||||
buyAddress: appState.currentView.context,
|
buyAddress: action.value,
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: true,
|
coinbase: true,
|
||||||
shapeshift: false,
|
shapeshift: false,
|
||||||
@ -398,46 +398,46 @@ function reduceApp (state, action) {
|
|||||||
|
|
||||||
case actions.UPDATE_BUY_ADDRESS:
|
case actions.UPDATE_BUY_ADDRESS:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: true,
|
coinbase: appState.buyView.formView.coinbase,
|
||||||
shapeshift: false,
|
shapeshift: appState.buyView.formView.shapeshift,
|
||||||
},
|
},
|
||||||
buyAddress: action.value,
|
buyAddress: action.value,
|
||||||
amount: appState.accountDetail.amount,
|
amount: appState.buyView.amount,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.UPDATE_COINBASE_AMOUNT:
|
case actions.UPDATE_COINBASE_AMOUNT:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: true,
|
coinbase: true,
|
||||||
shapeshift: false,
|
shapeshift: false,
|
||||||
},
|
},
|
||||||
buyAddress: appState.accountDetail.buyAddress,
|
buyAddress: appState.buyView.buyAddress,
|
||||||
amount: action.value,
|
amount: action.value,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.COINBASE_SUBVIEW:
|
case actions.COINBASE_SUBVIEW:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: true,
|
coinbase: true,
|
||||||
shapeshift: false,
|
shapeshift: false,
|
||||||
},
|
},
|
||||||
buyAddress: appState.accountDetail.buyAddress,
|
buyAddress: appState.buyView.buyAddress,
|
||||||
amount: appState.accountDetail.amount,
|
amount: appState.buyView.amount,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.SHAPESHIFT_SUBVIEW:
|
case actions.SHAPESHIFT_SUBVIEW:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: false,
|
coinbase: false,
|
||||||
@ -445,41 +445,35 @@ function reduceApp (state, action) {
|
|||||||
marketinfo: action.value.marketinfo,
|
marketinfo: action.value.marketinfo,
|
||||||
coinOptions: action.value.coinOptions,
|
coinOptions: action.value.coinOptions,
|
||||||
},
|
},
|
||||||
buyAddress: appState.accountDetail.buyAddress,
|
buyAddress: appState.buyView.buyAddress,
|
||||||
amount: appState.accountDetail.amount,
|
amount: appState.buyView.amount,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.PAIR_UPDATE:
|
case actions.PAIR_UPDATE:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
buyView: {
|
||||||
subview: 'buyForm',
|
subview: 'buyForm',
|
||||||
formView: {
|
formView: {
|
||||||
coinbase: false,
|
coinbase: false,
|
||||||
shapeshift: true,
|
shapeshift: true,
|
||||||
marketinfo: action.value.marketinfo,
|
marketinfo: action.value.marketinfo,
|
||||||
coinOptions: appState.accountDetail.formView.coinOptions,
|
coinOptions: appState.buyView.formView.coinOptions,
|
||||||
},
|
},
|
||||||
buyAddress: appState.accountDetail.buyAddress,
|
buyAddress: appState.buyView.buyAddress,
|
||||||
amount: appState.accountDetail.amount,
|
amount: appState.buyView.amount,
|
||||||
warning: null,
|
warning: null,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.COIN_SHIFT_REQUEST:
|
case actions.SHOW_QR:
|
||||||
return extend(appState, {
|
return extend(appState, {
|
||||||
accountDetail: {
|
qrRequested: true,
|
||||||
subview: 'buyForm',
|
transForward: true,
|
||||||
formView: {
|
Qr: {
|
||||||
coinbase: false,
|
message: action.value.message,
|
||||||
shapeshift: true,
|
image: action.value.qr,
|
||||||
marketinfo: appState.accountDetail.formView.marketinfo,
|
data: action.value.data,
|
||||||
coinOptions: appState.accountDetail.formView.coinOptions,
|
|
||||||
response: action.value.response,
|
|
||||||
},
|
|
||||||
buyAddress: appState.accountDetail.buyAddress,
|
|
||||||
amount: appState.accountDetail.amount,
|
|
||||||
warning: null,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user