index.tsx
1 import React from 'react'; 2 3 import translate from 'translations'; 4 import { stripHexPrefix } from 'libs/formatters'; 5 import { PaperWallet } from 'components'; 6 7 interface Props { 8 address: string; 9 privateKey: string; 10 } 11 12 interface State { 13 paperWalletImage: string; 14 } 15 16 export default class PrintableWallet extends React.Component<Props, State> { 17 public state: State = { 18 paperWalletImage: '' 19 }; 20 21 private paperWallet: PaperWallet | null; 22 23 public componentDidMount() { 24 setTimeout(() => { 25 if (!this.paperWallet) { 26 return this.componentDidMount(); 27 } 28 29 this.paperWallet.toPNG().then(png => this.setState({ paperWalletImage: png })); 30 }, 500); 31 } 32 33 public render() { 34 const { address, privateKey } = this.props; 35 const { paperWalletImage } = this.state; 36 const pkey = stripHexPrefix(privateKey); 37 const disabled = paperWalletImage ? '' : 'disabled'; 38 39 return ( 40 <div> 41 <PaperWallet address={address} privateKey={pkey} ref={c => (this.paperWallet = c)} /> 42 <a 43 role="button" 44 href={paperWalletImage} 45 className={`btn btn-lg btn-primary btn-block ${disabled}`} 46 style={{ margin: '10px auto 0', maxWidth: '260px' }} 47 download={`paper-wallet-0x${address.substr(0, 6)}`} 48 > 49 {translate('X_SAVE_PAPER')} 50 </a> 51 </div> 52 ); 53 } 54 }