diff --git a/js/interface.js b/js/interface.js index 40c7812..56dea35 100644 --- a/js/interface.js +++ b/js/interface.js @@ -61,8 +61,9 @@ var hasAllScreenshots = false; var screenshotValidationNotRequired = false; var spinner = ''; +var socketRequiresLogin = true; var socket = Fliplet.Socket({ - login: true + login: socketRequiresLogin }); var socketClientId; @@ -74,6 +75,29 @@ String.prototype.toCamelCase = function () { }).replace(/([^A-Z-a-z])/g, '').toLowerCase(); }; +function socketIsReady() { + return socket.connected && (!socketRequiresLogin || socket.loggedIn); +} + +function waitForSocketConnection() { + if (socketIsReady()) { + return Promise.resolve(); + } + + var interval; + + return new Promise(function (resolve) { + interval = setInterval(function () { + if (!socketIsReady()) { + return; + } + + clearInterval(interval); + resolve(); + }, 200); + }); +} + function createBundleID(orgName, appName) { return $.ajax({ url: "https://itunes.apple.com/lookup?bundleId=com." + orgName + "." + appName, @@ -1196,19 +1220,22 @@ function cloneCredentials(credentialKey, submission, saveData) { function setCredentials(id, data, verify) { verify = typeof verify === 'undefined' ? true : verify; - return Fliplet.API.request({ - method: 'PUT', - url: 'v1/organizations/' + organizationID + '/credentials/submission-' + id + '?verify=' + verify, - data: data + return waitForSocketConnection().then(function () { + return Fliplet.API.request({ + method: 'PUT', + url: 'v1/organizations/' + organizationID + '/credentials/submission-' + id + '?verify=' + verify, + data: data + }); }); } function getTeams(id, isItunes) { - return Fliplet.API.request({ - method: 'GET', - url: 'v1/organizations/' + organizationID + '/credentials/submission-' + id + '/teams?itunes=' + isItunes - }) - .then(function (result) { + return waitForSocketConnection().then(function () { + return Fliplet.API.request({ + method: 'GET', + url: 'v1/organizations/' + organizationID + '/credentials/submission-' + id + '/teams?itunes=' + isItunes + }); + }).then(function (result) { return Promise.resolve(result.teams); }); }