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