55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
import React from 'react';
|
|
|
|
import translate from 'translations';
|
|
import { stripHexPrefix } from 'libs/formatters';
|
|
import { PaperWallet } from 'components';
|
|
|
|
interface Props {
|
|
address: string;
|
|
privateKey: string;
|
|
}
|
|
|
|
interface State {
|
|
paperWalletImage: string;
|
|
}
|
|
|
|
export default class PrintableWallet extends React.Component<Props, State> {
|
|
public state: State = {
|
|
paperWalletImage: ''
|
|
};
|
|
|
|
private paperWallet: PaperWallet | null;
|
|
|
|
public componentDidMount() {
|
|
setTimeout(() => {
|
|
if (!this.paperWallet) {
|
|
return this.componentDidMount();
|
|
}
|
|
|
|
this.paperWallet.toPNG().then(png => this.setState({ paperWalletImage: png }));
|
|
}, 500);
|
|
}
|
|
|
|
public render() {
|
|
const { address, privateKey } = this.props;
|
|
const { paperWalletImage } = this.state;
|
|
const pkey = stripHexPrefix(privateKey);
|
|
const disabled = paperWalletImage ? '' : 'disabled';
|
|
|
|
return (
|
|
<div>
|
|
<PaperWallet address={address} privateKey={pkey} ref={c => (this.paperWallet = c)} />
|
|
<a
|
|
role="button"
|
|
href={paperWalletImage}
|
|
className={`btn btn-lg btn-primary btn-block ${disabled}`}
|
|
style={{ margin: '10px auto 0', maxWidth: '260px' }}
|
|
download={`paper-wallet-0x${address.substr(0, 6)}`}
|
|
>
|
|
{translate('X_SAVE_PAPER')}
|
|
</a>
|
|
</div>
|
|
);
|
|
}
|
|
}
|