captcha.ts 714 B

123456789101112131415161718192021222324252627
  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) {
  10. _recaptchaId = window.grecaptcha.render('recaptcha', {
  11. callback: (token: string) => {
  12. if (_recaptchaResolve) {
  13. _recaptchaResolve(token)
  14. _recaptchaResolve = undefined
  15. }
  16. window.grecaptcha.reset()
  17. },
  18. })
  19. }
  20. _recaptchaResolve = resolve
  21. } catch (error) {
  22. reject(error)
  23. }
  24. })
  25. }