From b3269791a9d6d29076b1eae1be43b9178fd7889d Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 10:54:01 +0100 Subject: [PATCH 01/10] Wait for socket connection before login or getting teams --- js/interface.js | 51 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/js/interface.js b/js/interface.js index 40c7812..8d52f25 100644 --- a/js/interface.js +++ b/js/interface.js @@ -61,10 +61,19 @@ var hasAllScreenshots = false; var screenshotValidationNotRequired = false; var spinner = ''; +var loginToSocket = true; var socket = Fliplet.Socket({ - login: true + login: loginToSocket }); var socketClientId; +var socketConnected = false; + +socket.on(loginToSocket ? 'loginSuccess' : 'connect', function () { + socketConnected = true; +}); +socket.on('disconnect', function () { + socketConnected = false; +}); /* FUNCTIONS */ String.prototype.toCamelCase = function () { @@ -74,6 +83,25 @@ String.prototype.toCamelCase = function () { }).replace(/([^A-Z-a-z])/g, '').toLowerCase(); }; +function waitForSocketConnection() { + if (socketConnected) { + return Promise.resolve(); + } + + var interval; + + return new Promise(function () { + interval = setInterval(function () { + if (!socketConnected) { + return; + } + + clearInterval(interval); + resolve(); + }, 200); + }); +} + function createBundleID(orgName, appName) { return $.ajax({ url: "https://itunes.apple.com/lookup?bundleId=com." + orgName + "." + appName, @@ -1196,19 +1224,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); }); } From 4d517961e889cb2cd713b5b8dd798feb0090cae3 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 10:55:39 +0100 Subject: [PATCH 02/10] Tweak --- js/interface.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/interface.js b/js/interface.js index 8d52f25..6f5c572 100644 --- a/js/interface.js +++ b/js/interface.js @@ -90,7 +90,7 @@ function waitForSocketConnection() { var interval; - return new Promise(function () { + return new Promise(function (resolve, reject) { interval = setInterval(function () { if (!socketConnected) { return; From a7df8814a0aaa7fdfb398d630f62d0bc13ae6399 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 10:55:46 +0100 Subject: [PATCH 03/10] Tweak --- js/interface.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/interface.js b/js/interface.js index 6f5c572..c50448f 100644 --- a/js/interface.js +++ b/js/interface.js @@ -90,7 +90,7 @@ function waitForSocketConnection() { var interval; - return new Promise(function (resolve, reject) { + return new Promise(function (resolve) { interval = setInterval(function () { if (!socketConnected) { return; From 286cfd2a4732e163ef83ceed3a8725781c6bdad5 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:14:15 +0100 Subject: [PATCH 04/10] Better handling of reconnections --- js/interface.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/js/interface.js b/js/interface.js index c50448f..1dfca4b 100644 --- a/js/interface.js +++ b/js/interface.js @@ -61,18 +61,14 @@ var hasAllScreenshots = false; var screenshotValidationNotRequired = false; var spinner = ''; -var loginToSocket = true; var socket = Fliplet.Socket({ - login: loginToSocket + login: true }); var socketClientId; -var socketConnected = false; +var socketLoggedIn = false; -socket.on(loginToSocket ? 'loginSuccess' : 'connect', function () { - socketConnected = true; -}); -socket.on('disconnect', function () { - socketConnected = false; +socket.on('loginSuccess', function () { + socketLoggedIn = true; }); /* FUNCTIONS */ @@ -84,7 +80,7 @@ String.prototype.toCamelCase = function () { }; function waitForSocketConnection() { - if (socketConnected) { + if (socket.connected && socketLoggedIn) { return Promise.resolve(); } @@ -92,7 +88,7 @@ function waitForSocketConnection() { return new Promise(function (resolve) { interval = setInterval(function () { - if (!socketConnected) { + if (!socket.connected || !socketLoggedIn) { return; } From ea26026c3074b4fc90bcfaa161174819ba8bb65a Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:20:48 +0100 Subject: [PATCH 05/10] Make login requirement configurable --- js/interface.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/interface.js b/js/interface.js index 1dfca4b..5333eb7 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; var socketLoggedIn = false; @@ -80,7 +81,7 @@ String.prototype.toCamelCase = function () { }; function waitForSocketConnection() { - if (socket.connected && socketLoggedIn) { + if (socket.connected && (!socketRequiresLogin || socketLoggedIn)) { return Promise.resolve(); } From e304eb9fdcea858b3bf22879adc2cd9e21bdcdd2 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:24:17 +0100 Subject: [PATCH 06/10] Use socket.loggedIn and remove loggedIn event listeners --- js/interface.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/js/interface.js b/js/interface.js index 5333eb7..5c755a4 100644 --- a/js/interface.js +++ b/js/interface.js @@ -66,11 +66,6 @@ var socket = Fliplet.Socket({ login: socketRequiresLogin }); var socketClientId; -var socketLoggedIn = false; - -socket.on('loginSuccess', function () { - socketLoggedIn = true; -}); /* FUNCTIONS */ String.prototype.toCamelCase = function () { @@ -81,7 +76,7 @@ String.prototype.toCamelCase = function () { }; function waitForSocketConnection() { - if (socket.connected && (!socketRequiresLogin || socketLoggedIn)) { + if (socket.connected && (!socketRequiresLogin || socket.loggedIn)) { return Promise.resolve(); } @@ -89,7 +84,7 @@ function waitForSocketConnection() { return new Promise(function (resolve) { interval = setInterval(function () { - if (!socket.connected || !socketLoggedIn) { + if (!socket.connected || (socketRequiresLogin && !socket.loggedIn)) { return; } From fdd651949b1e9f81092bdf5e80dc719be773542a Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:29:13 +0100 Subject: [PATCH 07/10] Removes duplicated code --- js/interface.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/js/interface.js b/js/interface.js index 5c755a4..7d78c1c 100644 --- a/js/interface.js +++ b/js/interface.js @@ -75,8 +75,12 @@ String.prototype.toCamelCase = function () { }).replace(/([^A-Z-a-z])/g, '').toLowerCase(); }; +function sockIsReady() { + return !socketRequiresLogin || socket.loggedIn; +} + function waitForSocketConnection() { - if (socket.connected && (!socketRequiresLogin || socket.loggedIn)) { + if (socket.connected && sockIsReady()) { return Promise.resolve(); } @@ -84,7 +88,7 @@ function waitForSocketConnection() { return new Promise(function (resolve) { interval = setInterval(function () { - if (!socket.connected || (socketRequiresLogin && !socket.loggedIn)) { + if (!socket.connected || !sockIsReady()) { return; } From 5f933ee4f3bcfb94ea3b06f64a30e65dee4371e9 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:29:34 +0100 Subject: [PATCH 08/10] Semicolon --- js/interface.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/interface.js b/js/interface.js index 7d78c1c..6734971 100644 --- a/js/interface.js +++ b/js/interface.js @@ -61,7 +61,7 @@ var hasAllScreenshots = false; var screenshotValidationNotRequired = false; var spinner = ''; -var socketRequiresLogin = true +var socketRequiresLogin = true; var socket = Fliplet.Socket({ login: socketRequiresLogin }); From 2937389fffc2254d90dbc109bc9163fe75c394bf Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:30:37 +0100 Subject: [PATCH 09/10] =?UTF-8?q?=F0=9F=A7=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/interface.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/interface.js b/js/interface.js index 6734971..cec0f67 100644 --- a/js/interface.js +++ b/js/interface.js @@ -75,12 +75,12 @@ String.prototype.toCamelCase = function () { }).replace(/([^A-Z-a-z])/g, '').toLowerCase(); }; -function sockIsReady() { +function socketIsReady() { return !socketRequiresLogin || socket.loggedIn; } function waitForSocketConnection() { - if (socket.connected && sockIsReady()) { + if (socket.connected && socketIsReady()) { return Promise.resolve(); } @@ -88,7 +88,7 @@ function waitForSocketConnection() { return new Promise(function (resolve) { interval = setInterval(function () { - if (!socket.connected || !sockIsReady()) { + if (!socket.connected || !socketIsReady()) { return; } From c238e56b4e7552e23d0c8fdde3a5b21c69886cd0 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Tue, 30 Apr 2019 11:31:21 +0100 Subject: [PATCH 10/10] Further duplication removal --- js/interface.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/interface.js b/js/interface.js index cec0f67..56dea35 100644 --- a/js/interface.js +++ b/js/interface.js @@ -76,11 +76,11 @@ String.prototype.toCamelCase = function () { }; function socketIsReady() { - return !socketRequiresLogin || socket.loggedIn; + return socket.connected && (!socketRequiresLogin || socket.loggedIn); } function waitForSocketConnection() { - if (socket.connected && socketIsReady()) { + if (socketIsReady()) { return Promise.resolve(); } @@ -88,7 +88,7 @@ function waitForSocketConnection() { return new Promise(function (resolve) { interval = setInterval(function () { - if (!socket.connected || !socketIsReady()) { + if (!socketIsReady()) { return; }