omnivore/packages/web/lib/hooks/useCopyLink.tsx

24 lines
603 B
TypeScript
Raw Permalink Normal View History

2022-02-11 17:24:33 +00:00
import { useCallback, useState } from 'react'
export const useCopyLink = (
url?: string,
type?: string
): {
link: string | undefined
copyLink: () => Promise<void>
isLinkCopied: boolean
} => {
const [isLinkCopied, setIsLinkCopied] = useState(false)
const link =
url || (typeof window !== 'undefined' ? window.location.toString() : '')
const copyLink = useCallback(async (): Promise<void> => {
2024-02-16 04:25:45 +00:00
await navigator.clipboard.writeText(link)
2022-02-11 17:24:33 +00:00
setIsLinkCopied(true)
window.setTimeout(() => setIsLinkCopied(false), 5000)
2024-02-16 04:25:45 +00:00
}, [link])
2022-02-11 17:24:33 +00:00
return { link, copyLink, isLinkCopied }
}