Merge branch 'master' into dh-slp-scans

This commit is contained in:
Chris Troutner
2021-02-15 17:45:50 -08:00
6 changed files with 224 additions and 83 deletions
+39 -9
View File
@@ -9,7 +9,9 @@ class TokenModal extends React.Component {
constructor (props) {
super(props)
_this = this
this.state = {}
this.state = {
copySuccess: ''
}
this.modalFooter = (
<>
@@ -44,16 +46,31 @@ class TokenModal extends React.Component {
<Col xs={12} sm={3}>
<b>TokenId:</b>
</Col>
<Col xs={10} sm={8}>
<Col xs={9} sm={7}>
{token.tokenId}
</Col>
<Col xs={2} sm={1}>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('tokenId')}
icon='copy'
/>
<Col
xs={3}
sm={2}
className={
_this.state.copySuccess ? 'nopadding' : ''
}
>
{_this.state.copySuccess === 'tokenId'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
style={{ cssFloat: 'right' }}
size='lg'
onClick={() => _this.copyToClipBoard('tokenId')}
icon='copy'
/>
)}
</Col>
</Row>
</Col>
@@ -155,6 +172,19 @@ class TokenModal extends React.Component {
textArea.select()
document.execCommand('Copy')
textArea.remove()
_this.handleCopySuccess(key)
}
handleCopySuccess (key) {
_this.setState({
copySuccess: key
})
setTimeout(() => {
_this.setState({
copySuccess: ''
})
}, 1000)
}
}
TokenModal.propTypes = {
+10 -1
View File
@@ -95,4 +95,13 @@
.txIdContainer button:focus {
border: none;
outline: none;
}
}
.copied-text{
width: 100%;
text-align: center;
color: var(--main-color);
}
.nopadding{
padding: 0!important;
}
+20 -13
View File
@@ -20,24 +20,31 @@ class Wallet extends React.Component {
return (
<Content>
<InfoWallets />
{/* Show wallet info is this exists */}
{_this.props.walletInfo.mnemonic && (
<WalletInfo walletInfo={_this.props.walletInfo} />
)}
<NewWallet
updateBalance={_this.props.updateBalance}
setWalletInfo={_this.props.setWalletInfo}
setBchWallet={_this.props.setBchWallet}
walletInfo={_this.props.walletInfo}
/>
{/** Shows the 'create' and 'import' cards
* if there's not a wallet created
*/}
{!_this.props.walletInfo.mnemonic && (
<>
<NewWallet
updateBalance={_this.props.updateBalance}
setWalletInfo={_this.props.setWalletInfo}
setBchWallet={_this.props.setBchWallet}
walletInfo={_this.props.walletInfo}
/>
<ImportWallet
updateBalance={_this.props.updateBalance}
setWalletInfo={_this.props.setWalletInfo}
setBchWallet={_this.props.setBchWallet}
walletInfo={_this.props.walletInfo}
/>
<ImportWallet
updateBalance={_this.props.updateBalance}
setWalletInfo={_this.props.setWalletInfo}
setBchWallet={_this.props.setBchWallet}
walletInfo={_this.props.walletInfo}
/>
</>
)}
{this.props.importComponents}
</Content>
+2 -1
View File
@@ -28,7 +28,8 @@ class InfoWallets extends React.Component {
<p>
This is an open source, non-custodial web wallet
supporting Bitcoin Cash (BCH) and SLP tokens. Web wallets
offer user convenience, by they are inherently insecure.{' '}
offer user convenience, but they are inherently insecure and
bad for privacy.{' '}
<b>Storing large amounts of money on a web wallet is not
recommended!
</b>
+147 -59
View File
@@ -19,7 +19,8 @@ class WalletInfo extends React.Component {
legacyAddress: '',
hdPath: '',
blurredMnemonic: true,
blurredPrivateKey: true
blurredPrivateKey: true,
copySuccess: ''
}
}
@@ -50,43 +51,77 @@ class WalletInfo extends React.Component {
<Row className='wallet-info-content mt-1 text-left'>
<Col xs={8} sm={9} lg={10}>
<span>
<b>Mnemonic:</b> <span className={_this.state.blurredMnemonic ? 'blurred' : ''}> {_this.state.mnemonic} </span>
<b>Mnemonic:</b>{' '}
<span
className={_this.state.blurredMnemonic ? 'blurred' : ''}
>
{' '}
{_this.state.mnemonic}{' '}
</span>
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.blurMnemonic()}
icon={eyeIcon.mnemonic}
/>
<FontAwesomeIcon
className='icon btn-animation ml-1'
size='lg'
onClick={() => _this.copyToClipBoard('mnemonic')}
icon='copy'
/>
{_this.state.copySuccess === 'mnemonic'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.blurMnemonic()}
icon={eyeIcon.mnemonic}
/>
<FontAwesomeIcon
className='icon btn-animation ml-1'
size='lg'
onClick={() => _this.copyToClipBoard('mnemonic')}
icon='copy'
/>
</>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
<Col xs={8} sm={9} lg={10}>
<span>
<b>Private Key: </b> <span className={_this.state.blurredPrivateKey ? 'blurred' : ''}> {_this.state.privateKey} </span>
<b>Private Key: </b>{' '}
<span
className={
_this.state.blurredPrivateKey ? 'blurred' : ''
}
>
{' '}
{_this.state.privateKey}{' '}
</span>
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.blurPrivateKey()}
icon={eyeIcon.privateKey}
/>
<FontAwesomeIcon
className='icon btn-animation ml-1'
size='lg'
onClick={() => _this.copyToClipBoard('privateKey')}
icon='copy'
/>
{_this.state.copySuccess === 'privateKey'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.blurPrivateKey()}
icon={eyeIcon.privateKey}
/>
<FontAwesomeIcon
className='icon btn-animation ml-1'
size='lg'
onClick={() => _this.copyToClipBoard('privateKey')}
icon='copy'
/>
</>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
@@ -96,12 +131,20 @@ class WalletInfo extends React.Component {
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('cashAddress')}
icon='copy'
/>
{_this.state.copySuccess === 'cashAddress'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('cashAddress')}
icon='copy'
/>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
@@ -111,12 +154,20 @@ class WalletInfo extends React.Component {
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('address')}
icon='copy'
/>
{_this.state.copySuccess === 'address'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('address')}
icon='copy'
/>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
@@ -126,12 +177,20 @@ class WalletInfo extends React.Component {
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('slpAddress')}
icon='copy'
/>
{_this.state.copySuccess === 'slpAddress'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('slpAddress')}
icon='copy'
/>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
@@ -141,12 +200,20 @@ class WalletInfo extends React.Component {
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('legacyAddress')}
icon='copy'
/>
{_this.state.copySuccess === 'legacyAddress'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('legacyAddress')}
icon='copy'
/>
)}
</Col>
</Row>
<Row className='wallet-info-content mt-1 text-left'>
@@ -157,12 +224,20 @@ class WalletInfo extends React.Component {
</span>
</Col>
<Col xs={4} sm={3} lg={2} className='text-right'>
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('hdPath')}
icon='copy'
/>
{_this.state.copySuccess === 'hdPath'
? (
<div className='copied-text'>
<span>Copied!</span>
</div>
)
: (
<FontAwesomeIcon
className='icon btn-animation'
size='lg'
onClick={() => _this.copyToClipBoard('hdPath')}
icon='copy'
/>
)}
</Col>
</Row>
</Col>
@@ -176,13 +251,13 @@ class WalletInfo extends React.Component {
blurMnemonic () {
_this.setState({
blurredMnemonic: (!_this.state.blurredMnemonic)
blurredMnemonic: !_this.state.blurredMnemonic
})
}
blurPrivateKey () {
_this.setState({
blurredPrivateKey: (!_this.state.blurredPrivateKey)
blurredPrivateKey: !_this.state.blurredPrivateKey
})
}
@@ -195,6 +270,19 @@ class WalletInfo extends React.Component {
textArea.select()
document.execCommand('Copy')
textArea.remove()
_this.handleCopySuccess(key)
}
handleCopySuccess (key) {
_this.setState({
copySuccess: key
})
setTimeout(() => {
_this.setState({
copySuccess: ''
})
}, 1000)
}
componentDidMount () {
@@ -19,4 +19,10 @@
.blurred {
filter: blur(2.7px);
-webkit-filter: blur(2.7px);
}
.copied-text{
width: 100%;
text-align: center;
color: var(--main-color);
}