-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathresult-item.tsx
More file actions
49 lines (42 loc) · 1.4 KB
/
result-item.tsx
File metadata and controls
49 lines (42 loc) · 1.4 KB
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
import { useRouter } from 'next/navigation'
import React, { useCallback, useMemo } from 'react'
import { ens_beautify } from '@adraffy/ens-normalize'
import { truncateAddress } from '#/lib/utilities'
import type { SearchENSNameDomain } from '#/types/requests'
import { isAddress } from '@encrypteddegen/identity-kit'
export interface ResultItemProps {
result: SearchENSNameDomain
resetSearch: () => void
}
const ResultItem: React.FC<ResultItemProps> = ({ result, resetSearch }) => {
const router = useRouter()
const beautifiedName = useMemo(() => {
try {
return ens_beautify(result.name)
} catch (error) {
return result.name
}
}, [result.name])
const onClick = useCallback(() => {
router.push(`/${result.resolvedAddress?.id || result.name}?ssr=false`)
resetSearch()
}, [result.name, result.resolvedAddress?.id, router, resetSearch])
return (
<div
key={result.name}
onClick={onClick}
className='text-md flex max-w-full cursor-pointer items-center gap-1 truncate transition-opacity hover:opacity-75'
>
<p>{beautifiedName}</p>
{result.resolvedAddress?.id && (
<p className='text-sm text-zinc-400'>
-{' '}
{isAddress(result.resolvedAddress.id)
? truncateAddress(result.resolvedAddress.id as string)
: result.resolvedAddress.id}
</p>
)}
</div>
)
}
export default ResultItem