captcha.ts 800 B

1234567891011121314151617181920212223242526272829
  1. let _recaptchaId: string
  2. let _recaptchaResolve: ((token: string) => void) | undefined
  3. export function executeV2Captcha(disabled: boolean = false) {
  4. return new Promise<void | string>((resolve, reject) => {
  5. if (disabled || !window.grecaptcha) {
  6. return resolve()
  7. }
  8. try {
  9. if (!_recaptchaId && window.grecaptcha) {
  10. _recaptchaId = window.grecaptcha.render('recaptcha', {
  11. callback: (token: string) => {
  12. if (_recaptchaResolve) {
  13. _recaptchaResolve(token)
  14. _recaptchaResolve = undefined
  15. }
  16. if (window.grecaptcha) {
  17. window.grecaptcha.reset(_recaptchaId)
  18. }
  19. },
  20. })
  21. }
  22. _recaptchaResolve = resolve
  23. } catch (error) {
  24. reject(error)
  25. }
  26. })
  27. }