export function useDoubleCheck() {
const [doubleCheck, setDoubleCheck] = useState(false)
function getButtonProps(
props?: React.ButtonHTMLAttributes<HTMLButtonElement>,
) {
const onBlur: React.ButtonHTMLAttributes<HTMLButtonElement>['onBlur'] =
() => setDoubleCheck(false)
const onClick: React.ButtonHTMLAttributes<HTMLButtonElement>['onClick'] =
doubleCheck
? undefined
: e => {
e.preventDefault()
setDoubleCheck(true)
}
const onKeyUp: React.ButtonHTMLAttributes<HTMLButtonElement>['onKeyUp'] =
e => {
if (e.key === 'Escape') {
setDoubleCheck(false)
}
}
return {
...props,
onBlur: callAll(onBlur, props?.onBlur),
onClick: callAll(onClick, props?.onClick),
onKeyUp: callAll(onKeyUp, props?.onKeyUp),
}
}
return { doubleCheck, getButtonProps }
}