Create a ShapeShift tx in tx History

feature/default_network_editable
Frankie 8 years ago
parent 23aeb1c5c1
commit 3525dc0801
  1. 10
      app/scripts/lib/config-manager.js
  2. 5
      app/scripts/metamask-controller.js
  3. 2
      ui/app/account-detail.js
  4. 2
      ui/app/actions.js
  5. 4
      ui/app/components/buy-button-subview.js
  6. 141
      ui/app/components/shift-list-item.js
  7. 4
      ui/app/css/index.css
  8. 2
      ui/app/reducers/app.js

@ -337,11 +337,11 @@ ConfigManager.prototype.getShapeShiftTxList = function () {
var data = this.getData() var data = this.getData()
var shapeShiftTxList = data.shapeShiftTxList ? data.shapeShiftTxList : [] var shapeShiftTxList = data.shapeShiftTxList ? data.shapeShiftTxList : []
shapeShiftTxList.forEach((tx) => { shapeShiftTxList.forEach((tx) => {
if (tx.response.status !== 'complete'){ if (tx.response.status !== 'complete') {
var requestListner = function (request) { var requestListner = function (request) {
tx.response = JSON.parse(this.responseText) tx.response = JSON.parse(this.responseText)
if (tx.status === 'complete') { if (tx.response.status === 'complete') {
tx.completeTime = new Date().getTime() tx.time = new Date().getTime()
} }
} }
@ -351,6 +351,7 @@ ConfigManager.prototype.getShapeShiftTxList = function () {
shapShiftReq.send() shapShiftReq.send()
} }
}) })
this.setData(data)
return shapeShiftTxList return shapeShiftTxList
} }
@ -358,10 +359,11 @@ ConfigManager.prototype.createShapeShiftTx = function (depositAddress, depositTy
var data = this.getData() var data = this.getData()
var shapeShiftTx = {depositAddress, depositType, key: 'shapeshift', time: new Date().getTime(), response: {}} var shapeShiftTx = {depositAddress, depositType, key: 'shapeshift', time: new Date().getTime(), response: {}}
if(!data.shapeShiftTxList) { if (!data.shapeShiftTxList) {
data.shapeShiftTxList = [shapeShiftTx] data.shapeShiftTxList = [shapeShiftTx]
} else { } else {
data.shapeShiftTxList.push(shapeShiftTx) data.shapeShiftTxList.push(shapeShiftTx)
} }
this.setData(data) this.setData(data)
} }

@ -65,7 +65,7 @@ module.exports = class MetamaskController {
// coinbase // coinbase
buyEth: this.buyEth.bind(this), buyEth: this.buyEth.bind(this),
// shapeshift // shapeshift
createShapeShiftTx : this.createShapeShiftTx.bind(this), createShapeShiftTx: this.createShapeShiftTx.bind(this),
} }
} }
@ -319,10 +319,9 @@ module.exports = class MetamaskController {
}) })
} }
createShapeShiftTx (depositAddress, depositType) { createShapeShiftTx (depositAddress, depositType) {
this.configManager.createShapeShiftTx(depositAddress, depositType) this.configManager.createShapeShiftTx(depositAddress, depositType)
} }
} }
function noop () {} function noop () {}

@ -30,7 +30,7 @@ function mapStateToProps (state) {
unconfTxs: valuesFor(state.metamask.unconfTxs), unconfTxs: valuesFor(state.metamask.unconfTxs),
unconfMsgs: valuesFor(state.metamask.unconfMsgs), unconfMsgs: valuesFor(state.metamask.unconfMsgs),
isEthWarningConfirmed: state.metamask.isEthConfirmed, isEthWarningConfirmed: state.metamask.isEthConfirmed,
shapeShiftTxList : state.metamask.shapeShiftTxList, shapeShiftTxList: state.metamask.shapeShiftTxList,
} }
} }

@ -747,7 +747,7 @@ function reshowQrCode (data, coin) {
shapeShiftRequest('marketinfo', {pair: `${coin.toLowerCase()}_eth`}, (mktResponse) => { shapeShiftRequest('marketinfo', {pair: `${coin.toLowerCase()}_eth`}, (mktResponse) => {
if (mktResponse.error) return dispatch(actions.showWarning(mktResponse.error)) if (mktResponse.error) return dispatch(actions.showWarning(mktResponse.error))
var message =[ var message = [
`Deposit your ${coin} to the address bellow:`, `Deposit your ${coin} to the address bellow:`,
`Deposit Limit: ${mktResponse.limit}`, `Deposit Limit: ${mktResponse.limit}`,
`Deposit Minimum:${mktResponse.minimum}`, `Deposit Minimum:${mktResponse.minimum}`,

@ -54,7 +54,7 @@ BuyButtonSubview.prototype.render = function () {
justifyContent: 'space-around', justifyContent: 'space-around',
}, },
}, [ }, [
h(currentForm.coinbase ? '.activeForm' : '.inactiveForm', { h(currentForm.coinbase ? '.activeForm' : '.inactiveForm.pointer', {
onClick: () => props.dispatch(actions.coinBaseSubview()), onClick: () => props.dispatch(actions.coinBaseSubview()),
}, 'Coinbase'), }, 'Coinbase'),
h('a', { h('a', {
@ -67,7 +67,7 @@ BuyButtonSubview.prototype.render = function () {
}, },
}), }),
]), ]),
h(currentForm.shapeshift ? '.activeForm' : '.inactiveForm', { h(currentForm.shapeshift ? '.activeForm' : '.inactiveForm.pointer', {
onClick: () => props.dispatch(actions.shapeShiftSubview(props.provider.type)), onClick: () => props.dispatch(actions.shapeShiftSubview(props.provider.type)),
}, 'Shapeshift'), }, 'Shapeshift'),

@ -10,6 +10,7 @@ const addressSummary = require('../util').addressSummary
const CopyButton = require('./copyButton') const CopyButton = require('./copyButton')
const EtherBalance = require('./eth-balance') const EtherBalance = require('./eth-balance')
const Tooltip = require('./tooltip')
module.exports = connect(mapStateToProps)(ShiftListItem) module.exports = connect(mapStateToProps)(ShiftListItem)
@ -19,15 +20,15 @@ function mapStateToProps (state) {
} }
inherits(ShiftListItem, Component) inherits(ShiftListItem, Component)
function ShiftListItem () { function ShiftListItem () {
Component.call(this) Component.call(this)
} }
ShiftListItem.prototype.render = function () { ShiftListItem.prototype.render = function () {
const props = this.props
return ( return (
h(`.transaction-list-item.flex-row`, { h('.transaction-list-item.flex-row', {
style:{ style: {
paddingTop: '20px', paddingTop: '20px',
paddingBottom: '20px', paddingBottom: '20px',
justifyContent: 'space-around', justifyContent: 'space-around',
@ -36,13 +37,13 @@ ShiftListItem.prototype.render = function () {
}, [ }, [
h('div', { h('div', {
style: { style: {
width:'0px', width: '0px',
position: 'relative', position: 'relative',
bottom: '19px', bottom: '19px',
}, },
}, [ }, [
h('img', { h('img', {
src:'https://info.shapeshift.io/sites/default/files/logo.png', src: 'https://info.shapeshift.io/sites/default/files/logo.png',
style: { style: {
height: '35px', height: '35px',
width: '132px', width: '132px',
@ -68,30 +69,53 @@ ShiftListItem.prototype.renderUtilComponents = function () {
switch (props.response.status) { switch (props.response.status) {
case 'no_deposits': case 'no_deposits':
return h('.flex-row', [ return h('.flex-row', [
h(CopyButton, { value: this.props.depositAddress }), h(CopyButton, {
h('i.fa.fa-qrcode.pointer', { value: this.props.depositAddress,
onClick: () => props.dispatch(actions.reshowQrCode(props.depositAddress, props.depositType)),
style: {
margin: '5px',
marginLeft: '23px',
marginRight: '12px',
fontSize: '20px',
color: '#F7861C',
},
}), }),
h(Tooltip, {
title: 'QR Code',
}, [
h('i.fa.fa-qrcode.pointer.pop-hover', {
onClick: () => props.dispatch(actions.reshowQrCode(props.depositAddress, props.depositType)),
style: {
margin: '5px',
marginLeft: '23px',
marginRight: '12px',
fontSize: '20px',
color: '#F7861C',
},
}),
]),
]) ])
case 'received': case 'received':
return h('.flex-row') return h('.flex-row')
case 'complete': case 'complete':
return h('.flex-row', [ return h('.flex-row', [
h(CopyButton, { value: this.props.response.transaction }), h(CopyButton, {
h(EtherBalance, { value: this.props.response.transaction,
value: `+${props.response.outgoingCoin}`, }),
width: '55px', h('.flex-row', {
shorten: true, style: {
style: {fontSize: '15px'}, alignItems: 'baseline',
}) },
}, [
h('.color-orange', {
style: {
fontFamily: 'Montserrat Light',
position: 'relative',
left: '6px',
},
}, '+'),
h(EtherBalance, {
value: `${props.response.outgoingCoin}`,
width: '55px',
shorten: true,
style: {
fontSize: '15px',
},
}),
]),
]) ])
case 'failed': case 'failed':
@ -106,17 +130,20 @@ ShiftListItem.prototype.renderInfo = function () {
var props = this.props var props = this.props
switch (props.response.status) { switch (props.response.status) {
case 'no_deposits': case 'no_deposits':
return h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [ return h('.flex-column', {
style: {
width: '200px',
overflow: 'hidden',
},
}, [
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
color: '#ABA9AA', color: '#ABA9AA',
width: '100%', width: '100%',
}, },
}, [ }, `${props.depositType} to ETH via ShapeShift`),
`${props.depositType} to ETH via ShapeShift` h('div', 'No deposits received'),
]),
h('div', `Status: ${props.response.status.replace('_', ' ')}`),
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
@ -126,17 +153,20 @@ ShiftListItem.prototype.renderInfo = function () {
}, formatDate(props.time)), }, formatDate(props.time)),
]) ])
case 'received': case 'received':
return h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [ return h('.flex-column', {
style: {
width: '200px',
overflow: 'hidden',
},
}, [
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
color: '#ABA9AA', color: '#ABA9AA',
width: '100%', width: '100%',
}, },
}, [ }, `${props.depositType} to ETH via ShapeShift`),
`${props.depositType} to ETH via ShapeShift` h('div', 'Conversion in progress'),
]),
h('div', `Conversion in progress`),
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
@ -146,20 +176,25 @@ ShiftListItem.prototype.renderInfo = function () {
}, formatDate(props.time)), }, formatDate(props.time)),
]) ])
case 'complete': case 'complete':
var url = explorerLink(props.response.transaction, parseInt('1')) var url = explorerLink(props.response.transaction, parseInt('1'))
return h('.flex-column.pointer', { return h('.flex-column.pointer', {
style: {width: '200px', overflow: 'hidden'}, style: {
onClick: () => extension.tabs.create({ url }) width: '200px',
overflow: 'hidden',
},
onClick: () => extension.tabs.create({
url,
}),
}, [ }, [
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
color: '#ABA9AA', color: '#ABA9AA',
width: '100%', width: '100%',
}, },
}, `ShapeShift`), }, 'From ShapeShift'),
h('div', props.completeTime), h('div', formatDate(props.time)),
h('div', { h('div', {
style: { style: {
fontSize: 'x-small', fontSize: 'x-small',
@ -170,7 +205,7 @@ ShiftListItem.prototype.renderInfo = function () {
]) ])
case 'failed': case 'failed':
return h('span.error', ' (Failed)') return h('span.error', '(Failed)')
default: default:
return '' return ''
} }

@ -592,3 +592,7 @@ div.message-container > div:first-child {
font-size: 15px; font-size: 15px;
color: #4D4D4D; color: #4D4D4D;
} }
.pop-hover:hover {
transform: scale(1.1);
}

@ -490,7 +490,7 @@ function reduceApp (state, action) {
data: action.value.data, data: action.value.data,
}, },
}) })
default: default:
return appState return appState
} }
} }

Loading…
Cancel
Save