chatbot-template/lib/hooks/use-copy-to-clipboard.tsx

34 lines
644 B
TypeScript
Raw Normal View History

2023-06-02 15:33:48 -04:00
'use client'
2023-06-13 23:58:59 +04:00
import * as React from 'react'
2023-05-19 12:33:56 -04:00
export interface useCopyToClipboardProps {
2023-06-02 15:33:48 -04:00
timeout?: number
2023-05-19 12:33:56 -04:00
}
export function useCopyToClipboard({
2023-06-02 15:33:48 -04:00
timeout = 2000
2023-05-19 12:33:56 -04:00
}: useCopyToClipboardProps) {
2023-06-13 23:58:59 +04:00
const [isCopied, setIsCopied] = React.useState<Boolean>(false)
2023-05-19 12:33:56 -04:00
const copyToClipboard = (value: string) => {
if (typeof window === 'undefined' || !navigator.clipboard?.writeText) {
return
}
if (!value) {
2023-06-02 15:33:48 -04:00
return
2023-05-19 12:33:56 -04:00
}
navigator.clipboard.writeText(value).then(() => {
2023-06-02 15:33:48 -04:00
setIsCopied(true)
2023-05-19 12:33:56 -04:00
setTimeout(() => {
2023-06-02 15:33:48 -04:00
setIsCopied(false)
}, timeout)
})
}
2023-05-19 12:33:56 -04:00
2023-06-02 15:33:48 -04:00
return { isCopied, copyToClipboard }
2023-05-19 12:33:56 -04:00
}