-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemojiAvatarForAddress.ts
82 lines (79 loc) · 2.19 KB
/
emojiAvatarForAddress.ts
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
const colors = [
'#FC5C54',
'#FFD95A',
'#E95D72',
'#6A87C8',
'#5FD0F3',
'#75C06B',
'#FFDD86',
'#5FC6D4',
'#FF949A',
'#FF8024',
'#9BA1A4',
'#EC66FF',
'#FF8CBC',
'#FF9A23',
'#C5DADB',
'#A8CE63',
'#71ABFF',
'#FFE279',
'#B6B1B6',
'#FF6780',
'#A575FF',
'#4D82FF',
'#FFB35A',
] as const;
const avatars = [
{ color: colors[0], emoji: '🌶' },
{ color: colors[1], emoji: '🤑' },
{ color: colors[2], emoji: '🐙' },
{ color: colors[3], emoji: '🫐' },
{ color: colors[4], emoji: '🐳' },
{ color: colors[0], emoji: '🤶' },
{ color: colors[5], emoji: '🌲' },
{ color: colors[6], emoji: '🌞' },
{ color: colors[7], emoji: '🐒' },
{ color: colors[8], emoji: '🐵' },
{ color: colors[9], emoji: '🦊' },
{ color: colors[10], emoji: '🐼' },
{ color: colors[11], emoji: '🦄' },
{ color: colors[12], emoji: '🐷' },
{ color: colors[13], emoji: '🐧' },
{ color: colors[8], emoji: '🦩' },
{ color: colors[14], emoji: '👽' },
{ color: colors[0], emoji: '🎈' },
{ color: colors[8], emoji: '🍉' },
{ color: colors[1], emoji: '🎉' },
{ color: colors[15], emoji: '🐲' },
{ color: colors[16], emoji: '🌎' },
{ color: colors[17], emoji: '🍊' },
{ color: colors[18], emoji: '🐭' },
{ color: colors[19], emoji: '🍣' },
{ color: colors[1], emoji: '🐥' },
{ color: colors[20], emoji: '👾' },
{ color: colors[15], emoji: '🥦' },
{ color: colors[0], emoji: '👹' },
{ color: colors[17], emoji: '🙀' },
{ color: colors[4], emoji: '⛱' },
{ color: colors[21], emoji: '⛵️' },
{ color: colors[17], emoji: '🥳' },
{ color: colors[8], emoji: '🤯' },
{ color: colors[22], emoji: '🤠' },
] as const;
function hashCode(text: string) {
let hash = 0;
if (text.length === 0) return hash;
for (let i = 0; i < text.length; i++) {
const chr = text.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0;
}
return hash;
}
export function emojiAvatarForAddress(address: string) {
const resolvedAddress = typeof address === 'string' ? address : '';
const avatarIndex = Math.abs(
hashCode(resolvedAddress.toLowerCase()) % avatars.length,
);
return avatars[avatarIndex ?? 0];
}