import Dropdown from 'react-bootstrap/Dropdown' import ShareIcon from '@/svgs/share-fill.svg' import copy from 'clipboard-copy' import useCrossposter from './use-crossposter' import { useMe } from './me' import { useToast } from './toast' import { SSR } from '@/lib/constants' import { commentSubTreeRootId } from '@/lib/item' import { useRouter } from 'next/router' const referrurl = (ipath, me) => { const referral = me && !me.privates?.noReferralLinks const path = `${ipath}${referral ? `/r/${me.name}` : ''}` if (!SSR) { return `${window.location.protocol}//${window.location.host}${path}` } return `${process.env.NEXT_PUBLIC_URL}${path}` } async function share (title, url, toaster) { // only use navigator.share on touch devices try { if (navigator?.share && (navigator?.maxTouchPoints > 0 || navigator?.msMaxTouchPoints > 0)) { await navigator.share({ title, text: '', url }) toaster.success('link shared') } else { await copy(url) toaster.success('link copied') } } catch (e) { if (e instanceof DOMException && e.name === 'AbortError') { return } toaster.danger('failed to copy link') } } export default function Share ({ path, title = '', className = '' }) { const me = useMe() const toaster = useToast() const url = referrurl(path, me) return (