增加复制文字内容到剪贴板的功能。
This commit is contained in:
parent
fc340f3f74
commit
9664983b5c
28
src/hooks/useCopy.ts
Normal file
28
src/hooks/useCopy.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import { isEmpty, isNil } from 'lodash-es';
|
||||||
|
import { useCallback, useEffect } from 'react';
|
||||||
|
import { useCopyToClipboard } from 'react-use';
|
||||||
|
import { NotificationType, useNotification } from '../components/Notifications';
|
||||||
|
|
||||||
|
export function useCopy() {
|
||||||
|
const { showToast } = useNotification();
|
||||||
|
const [cpState, copyToClipboard] = useCopyToClipboard();
|
||||||
|
const copyAction = useCallback((content: string) => {
|
||||||
|
if (isNil(content) || isEmpty(content)) return;
|
||||||
|
copyToClipboard(content);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!isNil(cpState.error)) {
|
||||||
|
showToast(NotificationType.ERROR, 'Failed to copy to clipboard', 'tabler:alert-circle', 3000);
|
||||||
|
} else if (!isNil(cpState.value)) {
|
||||||
|
showToast(
|
||||||
|
NotificationType.SUCCESS,
|
||||||
|
`Content copied to clipboard.`,
|
||||||
|
'tabler:circle-check',
|
||||||
|
3000,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [cpState]);
|
||||||
|
|
||||||
|
return copyAction;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user