1234567891011121314151617181920212223242526272829 |
- import { useState } from 'react'
- type CopiedValue = string | null
- type CopyFn = (text: string) => Promise<boolean>
- function useCopyToClipboard(): [CopiedValue, CopyFn] {
- const [copiedText, setCopiedText] = useState<CopiedValue>(null)
- const copy: CopyFn = async text => {
- if (!navigator?.clipboard) {
- console.warn('Clipboard not supported')
- return false
- }
- try {
- await navigator.clipboard.writeText(text)
- setCopiedText(text)
- return true
- } catch (error) {
- console.warn('Copy failed', error)
- setCopiedText(null)
- return false
- }
- }
- return [copiedText, copy]
- }
- export default useCopyToClipboard
|