mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 23:58:06 +01:00
3732c5f71e
ESLint rules have been added to enforce our JSDoc conventions. These rules were introduced by updating `@metamask/eslint-config` to v9. Some of the rules have been disabled because the effort to fix all lint errors was too high. It might be easiest to enable these rules one directory at a time, or one rule at a time. Most of the changes in this PR were a result of running `yarn lint:fix`. There were a handful of manual changes that seemed obvious and simple to make. Anything beyond that and the rule was left disabled.
29 lines
713 B
JavaScript
29 lines
713 B
JavaScript
import { useState, useCallback } from 'react';
|
|
import copyToClipboard from 'copy-to-clipboard';
|
|
import { SECOND } from '../../shared/constants/time';
|
|
import { useTimeout } from './useTimeout';
|
|
|
|
/**
|
|
* useCopyToClipboard
|
|
*
|
|
* @param {number} [delay=3000] - delay in ms
|
|
* @returns {[boolean, Function]}
|
|
*/
|
|
const DEFAULT_DELAY = SECOND * 3;
|
|
|
|
export function useCopyToClipboard(delay = DEFAULT_DELAY) {
|
|
const [copied, setCopied] = useState(false);
|
|
const startTimeout = useTimeout(() => setCopied(false), delay, false);
|
|
|
|
const handleCopy = useCallback(
|
|
(text) => {
|
|
setCopied(true);
|
|
startTimeout();
|
|
copyToClipboard(text);
|
|
},
|
|
[startTimeout],
|
|
);
|
|
|
|
return [copied, handleCopy];
|
|
}
|