1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
import React, { PureComponent } from 'react'
import PropTypes from 'prop-types'
import classnames from 'classnames'
import { toDataUrl } from '../../../lib/blockies'
import contractMap from 'eth-contract-metadata'
import { checksumAddress } from '../../../app/util'
import Jazzicon from '../jazzicon'
const getStyles = diameter => (
{
height: diameter,
width: diameter,
borderRadius: diameter / 2,
}
)
export default class Identicon extends PureComponent {
static propTypes = {
address: PropTypes.string,
className: PropTypes.string,
diameter: PropTypes.number,
image: PropTypes.string,
useBlockie: PropTypes.bool,
}
static defaultProps = {
diameter: 46,
}
renderImage () {
const { className, diameter, image } = this.props
return (
<img
className={classnames('identicon', className)}
src={image}
style={getStyles(diameter)}
/>
)
}
renderJazzicon () {
const { address, className, diameter } = this.props
return (
<Jazzicon
address={address}
diameter={diameter}
className={classnames('identicon', className)}
style={getStyles(diameter)}
/>
)
}
renderBlockie () {
const { address, className, diameter } = this.props
return (
<div
className={classnames('identicon', className)}
style={getStyles(diameter)}
>
<img
src={toDataUrl(address)}
height={diameter}
width={diameter}
/>
</div>
)
}
render () {
const { className, address, image, diameter, useBlockie } = this.props
if (image) {
return this.renderImage()
}
if (address) {
const checksummedAddress = checksumAddress(address)
if (contractMap[checksummedAddress] && contractMap[checksummedAddress].logo) {
return this.renderJazzicon()
}
return useBlockie
? this.renderBlockie()
: this.renderJazzicon()
}
return (
<img
className={classnames('balance-icon', className)}
src="./images/eth_logo.svg"
style={getStyles(diameter)}
/>
)
}
}
|