client-ui
Version:
Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront
63 lines (55 loc) • 1.84 kB
JavaScript
/* global grecaptcha moduleName */
(function () {
'use strict';
function recaptchaService($q) {
var self = this;
self.widgetId = false;
var callback = false;
function completePromise(deferred) {
return deferred.resolve(self.widgetId);
}
function getWidgetId() {
var deferred = $q.defer();
if (self.widgetId !== false) {
deferred.resolve(self.widgetId);
} else {
callback = function() {
completePromise(deferred);
};
}
return deferred.promise;
}
function getResponse() {
var deferred = $q.defer();
getWidgetId()
.then(function(widgetId) {
var response = false;
try {
response = grecaptcha.getResponse(self.widgetId);
} catch(e) {
response = false;
}
grecaptcha.reset(self.widgetId);
if (response) {
deferred.resolve(response);
} else {
var error = {
code: "RECAPTCHA_NO_RESPONSE"
};
deferred.reject(error);
}
});
return deferred.promise;
}
function setWidgetId(widgetId) {
self.widgetId = widgetId;
if (callback) {
return callback();
}
}
self.setWidgetId = setWidgetId;
self.getResponse = getResponse;
}
angular.module(moduleName).service('recaptchaService', recaptchaService);
recaptchaService.$inject = ['$q'];
})();