react-grecaptcha-v3
Version:
Google Recaptcha V3 for React.js based application. Keep website performance high while prioritizing security.
31 lines (30 loc) • 1.05 kB
JavaScript
import { useCallback } from 'react';
import subscribeEvent from './subscribeEvent';
const useHandleNextInQueue = (siteKey, queueRef) => {
return useCallback(() => {
if (!siteKey) {
return;
}
let item;
while ((item = queueRef.current.shift())) {
const { action, onComplete, onError } = item;
subscribeEvent(() => {
if (window.grecaptcha?.execute) {
window.grecaptcha
.execute(siteKey, { action })
.then(onComplete)
.catch((err) => {
if (err instanceof Error) {
onError(err);
return;
}
onError(new Error('Unexpected error'));
});
return;
}
onError(new Error('Bad execute().'));
});
}
}, [queueRef, siteKey]);
};
export default useHandleNextInQueue;