From 0f36c59cc20c3f3a28d3a281cb9b59df343fa156 Mon Sep 17 00:00:00 2001 From: Markin Igor <markin.io210@gmail.com> Date: Wed, 12 Dec 2018 16:55:54 +0300 Subject: [PATCH] Refactor executeRestfulFunction 2. --- javascript/src/iframe/viamapi-iframe.js | 71 ++++++++++++------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 15244b9..779e33b 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1347,45 +1347,44 @@ window.currentlyAuthenticatedIdentity = null; window.currentlyLoadedIdentity = null; window.lastTimeGetProfile = 0; +const handleIdentityLogin = (identity, uuid, token) => { + const { loadedIdentities, viamApi } = window; + + viamApi.setSessionData(uuid, token); + localStorage.setItem("uuid", uuid); + localStorage.setItem("token", token); + localStorage.setItem("authenticatedIdentity", identity.authentication.publicKey); + window.currentlyAuthenticatedIdentity = loadedIdentities[identity.authentication.publicKey]; + setKeyForUUID(uuid, identity.authentication.publicKey); + window.lastTimeGetProfile = 0; +}; + function executeRestfulFunction(type, that, fn, ...args) { - const { currentlyAuthenticatedIdentity, viamApi, loadedIdentities, currentlyLoadedIdentity } = window; - - if (type === "private") { - return new Penpal.Promise(executeResult => { - fn.apply(that, args).then((response) => { - const identity = currentlyAuthenticatedIdentity || currentlyLoadedIdentity; - - if (response.data.code === "400" && response.data.status === "Bad session" && identity) { - viamApi.identityLogin("previousaddeddevice") - .then((response) => { - if (response.data.code === "200") { - const uuid = response.data.data["Uuid"]; - const token = response.data.data["Session"]; - viamApi.setSessionData(uuid, token); - localStorage.setItem("uuid", uuid); - localStorage.setItem("token", token); - localStorage.setItem("authenticatedIdentity", identity.authentication.publicKey); - window.currentlyAuthenticatedIdentity = loadedIdentities[identity.authentication.publicKey]; - setKeyForUUID(uuid, identity.authentication.publicKey); - window.lastTimeGetProfile = 0; - fn.apply(null, args).then(({data}) => executeResult(data)); - } else { - executeResult(response.data); - } - }) - .catch(console.warn); - } else { - executeResult(response.data); - } - }); - }); - } else { - return new Penpal.Promise(executeResult => { - fn.apply(that, args).then((response) => { + const { currentlyAuthenticatedIdentity, viamApi, currentlyLoadedIdentity } = window; + + return new Penpal.Promise(executeResult => { + fn.apply(that, args).then((response) => { + const identity = currentlyAuthenticatedIdentity || currentlyLoadedIdentity; + + if (type === "private" && identity && response.data.code === "400" && response.data.status === "Bad session") { + viamApi.identityLogin("previousaddeddevice") + .then((response) => { + if (response.data.code === "200") { + const uuid = response.data.data["Uuid"]; + const token = response.data.data["Session"]; + handleIdentityLogin(identity, uuid, token); + // TODO: Previously there was fn.apply(null, args) where null is probably wrong context for fn.apply() + fn.apply(that, args).then(({data}) => executeResult(data)); + } else { + executeResult(response.data); + } + }) + .catch(console.warn); + } else { executeResult(response.data); - }); + } }); - } + }); } window.executeRestfulFunction = executeRestfulFunction; -- GitLab