Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { useCallback } from 'react'; import { useIntl } from 'react-intl'; import { useSnackbars } from '@allshares/studio-design-system'; import { log } from '@amalia/kernel/logger/client'; export const useClipboard = () => { const { snackInfo, snackError } = useSnackbars(); const { formatMessage } = useIntl(); const copy = useCallback( (text: string) => { const onSuccess = () => { const message = text.length < 200 ? formatMessage({ defaultMessage: 'Copied “{text}” to clipboard.' }, { text }) : formatMessage({ defaultMessage: 'Copied to clipboard.' }); snackInfo(message, { autoHideDuration: 1000 }); }; const onError = (error: Error) => { const message = formatMessage({ defaultMessage: 'Failed to copy “{text}” to clipboard.' }, { text }); log.error(message, error); snackError(message, { autoHideDuration: 1000 }); }; // Using the Clipboard API // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText navigator.clipboard.writeText(text).then(onSuccess).catch(onError); }, [formatMessage, snackInfo, snackError], ); return { copy }; }; |