136 lines
No EOL
3.6 KiB
JavaScript
136 lines
No EOL
3.6 KiB
JavaScript
(function () {
|
|
|
|
var entityID;
|
|
var codes = {};
|
|
var GOOGLE_SCRIPTS_URL = "https://script.google.com/macros/s/AKfycbz9iifQui3XTCqHemf9x1CKZEffx3f7ONdVzb4YK_OtTv7cvw/exec";
|
|
|
|
// GOOGLE SHEET FUNCTIONS
|
|
function startFetchCode(onCompleteCallback, onErrorCallback) {
|
|
|
|
var params = "";
|
|
var onComplete = onCompleteCallback;
|
|
var onError = onErrorCallback;
|
|
|
|
sendRequest(GOOGLE_SCRIPTS_URL, params, onComplete, onError);
|
|
}
|
|
|
|
function sendRequest(url, paramString, onComplete, onError) {
|
|
|
|
var request = new XMLHttpRequest();
|
|
var requestURL = paramString
|
|
? url + "?" + paramString
|
|
: url;
|
|
|
|
// print("SENT PARAMS");
|
|
// print(requestURL);
|
|
|
|
request.open('GET', requestURL);
|
|
request.timeout = 10000;
|
|
request.ontimeout = onError;
|
|
request.onreadystatechange = function () { // called after load when readyState = 4
|
|
if (request.readyState === 4) {
|
|
if (onComplete) {
|
|
onComplete(request);
|
|
}
|
|
}
|
|
};
|
|
request.send();
|
|
|
|
}
|
|
|
|
function encodeURLParams(params) {
|
|
var paramPairs = [];
|
|
for (var key in params) {
|
|
paramPairs.push(key + "=" + params[key]);
|
|
}
|
|
return paramPairs.join("&");
|
|
}
|
|
|
|
function CodeGetter () {};
|
|
|
|
CodeGetter.prototype = {
|
|
remotelyCallable: [
|
|
"getCode"
|
|
],
|
|
|
|
preload: function (id) {
|
|
entityID = id;
|
|
},
|
|
|
|
getRequestCallbacks: function (sessionUUID, username) {
|
|
var _this = this;
|
|
var uuid = sessionUUID;
|
|
|
|
var onCompleteCallback = function (request) {
|
|
|
|
print("recieved code ", request.responseText);
|
|
print("uuid", uuid);
|
|
|
|
// get code
|
|
var code;
|
|
try {
|
|
code = request.responseText;
|
|
} catch (e) {
|
|
console.error("Error getting code");
|
|
}
|
|
|
|
// set username to the code
|
|
codes[username] = code;
|
|
|
|
_this.returnCode(uuid, code);
|
|
}
|
|
|
|
var onErrorCallback = function () {
|
|
_this.returnError(uuid);
|
|
}
|
|
|
|
return [
|
|
onCompleteCallback,
|
|
onErrorCallback
|
|
];
|
|
},
|
|
|
|
// params [ sessionUUID, username ]
|
|
getCode: function (id, params) {
|
|
|
|
var sessionUUID = params[0];
|
|
var username = params[1];
|
|
|
|
if (codes[username]) {
|
|
this.returnCode(codes[username]);
|
|
} else {
|
|
var callbacks = this.getRequestCallbacks(sessionUUID, username);
|
|
|
|
var onComplete = callbacks[0];
|
|
var onError = callbacks[1];
|
|
|
|
startFetchCode(onComplete, onError);
|
|
}
|
|
},
|
|
|
|
returnError: function (uuid) {
|
|
|
|
print("error", uuid);
|
|
Entities.callEntityClientMethod(
|
|
uuid,
|
|
entityID,
|
|
"displayError"
|
|
);
|
|
},
|
|
|
|
returnCode: function (uuid, code) {
|
|
|
|
print("returning code", uuid, code, entityID);
|
|
Entities.callEntityClientMethod(
|
|
uuid,
|
|
entityID,
|
|
"displayCode",
|
|
[code]
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
return new CodeGetter();
|
|
|
|
}); |