Skip to content

Commit 9175787

Browse files
committed
Adding useClipboard hook
1 parent ab4ce0c commit 9175787

File tree

4 files changed

+64
-28
lines changed

4 files changed

+64
-28
lines changed

packages/hooks/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,8 @@
5757
"viem": "^2.28.1",
5858
"vite": "^6.3.4",
5959
"vitest": "^2.1.9"
60+
},
61+
"dependencies": {
62+
"copy-to-clipboard": "^3.3.3"
6063
}
6164
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import copy from 'copy-to-clipboard'
2+
import { useEffect, useState } from 'react'
3+
4+
interface UseClipboardProps {
5+
timeout?: number
6+
}
7+
8+
export const useClipboard = (props?: UseClipboardProps) => {
9+
const [isCopied, setIsCopied] = useState(false)
10+
const timeout = props && props.timeout
11+
12+
useEffect(() => {
13+
if (isCopied) {
14+
const id = setTimeout(() => {
15+
setIsCopied(false)
16+
}, timeout)
17+
18+
return () => {
19+
clearTimeout(id)
20+
}
21+
}
22+
}, [isCopied, timeout])
23+
24+
return [
25+
isCopied,
26+
(text: string) => {
27+
copy(text)
28+
setIsCopied(true)
29+
}
30+
] as const
31+
}

packages/hooks/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ export { useGetSwapRoutes } from './hooks/Combination/useGetSwapRoutes'
4343

4444
// Etc
4545
export { useClearCachedBalances } from './hooks/useClearCachedBalances'
46+
export { useClipboard } from './hooks/useClipboard'

pnpm-lock.yaml

Lines changed: 29 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)