RelayReview.tsx raw
1 import { getReplaceableEventIdentifier } from '@/lib/event'
2 import { getStarsFromRelayReviewEvent } from '@/lib/event-metadata'
3 import { toRelay } from '@/lib/link'
4 import { simplifyUrl } from '@/lib/url'
5 import { useSecondaryPage } from '@/PageManager'
6 import { Event } from 'nostr-tools'
7 import { useMemo } from 'react'
8 import Content from '../Content'
9 import Stars from '../Stars'
10
11 export default function RelayReview({ event, className }: { event: Event; className?: string }) {
12 const { push } = useSecondaryPage()
13 const stars = useMemo(() => getStarsFromRelayReviewEvent(event), [event])
14 const url = useMemo(() => getReplaceableEventIdentifier(event), [event])
15 const simplifiedUrl = useMemo(() => simplifyUrl(url), [url])
16
17 return (
18 <div className={className}>
19 <div className="mt-2 flex items-center gap-2">
20 <Stars stars={stars} />
21 <span className="text-sm text-muted-foreground">→</span>
22 <div
23 className="text-sm text-muted-foreground hover:text-foreground hover:underline cursor-pointer truncate"
24 onClick={(e) => {
25 e.stopPropagation()
26 push(toRelay(url))
27 }}
28 >
29 {simplifiedUrl}
30 </div>
31 </div>
32 <Content event={event} className="mt-2" />
33 </div>
34 )
35 }
36