about summary refs log tree commit diff
path: root/bskyembed/src/components/link.tsx
blob: 8a20fe5c105ace68357709ef716e5f4315270615 (plain) (blame)
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
import {h} from 'preact'

export function Link({
  href,
  className,
  disableTracking,
  ...props
}: {
  href: string
  className?: string
  disableTracking?: boolean
} & h.JSX.HTMLAttributes<HTMLAnchorElement>) {
  const searchParam = new URLSearchParams(window.location.search)
  const ref_url = searchParam.get('ref_url')

  const newSearchParam = new URLSearchParams()
  newSearchParam.set('ref_src', 'embed')
  if (ref_url) {
    newSearchParam.set('ref_url', ref_url)
  }

  return (
    <a
      href={`${href.startsWith('http') ? href : `https://bsky.app${href}`}${
        disableTracking ? '' : `?${newSearchParam.toString()}`
      }`}
      target="_blank"
      rel="noopener noreferrer nofollow"
      onClick={evt => evt.stopPropagation()}
      className={`cursor-pointer ${className || ''}`}
      {...props}
    />
  )
}