From 8be9a130faf1d4d8ee059cc3d2f17df71aa5564e Mon Sep 17 00:00:00 2001
From: Markin Igor <markin.io210@gmail.com>
Date: Wed, 12 Dec 2018 15:54:30 +0300
Subject: [PATCH] Refactor executeRestfulFunction.

---
 javascript/src/iframe/viamapi-iframe.js | 53 +++++++------------------
 1 file changed, 15 insertions(+), 38 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 71d24b5..15244b9 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1353,50 +1353,27 @@ function executeRestfulFunction(type, that, fn, ...args) {
   if (type === "private") {
     return new Penpal.Promise(executeResult => {
       fn.apply(that, args).then((response) => {
-        if (response.data.code === "400" && response.data.status === "Bad session") {
-          if (currentlyAuthenticatedIdentity !== "" && currentlyAuthenticatedIdentity !== null) {
-            viamApi.identityLogin("previousaddeddevice").then((response1) => {
-              if (response1.data.code === "200") {
-                const uuid = response1.data.data["Uuid"];
-                const token = response1.data.data["Session"];
+        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", currentlyAuthenticatedIdentity.authentication.publicKey);
-                window.currentlyAuthenticatedIdentity = loadedIdentities[currentlyAuthenticatedIdentity.authentication.publicKey];
-                setKeyForUUID(uuid, currentlyAuthenticatedIdentity.authentication.publicKey);
+                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((response2) => {
-                  executeResult(response2.data);
-                });
+                fn.apply(null, args).then(({data}) => executeResult(data));
               } else {
-                executeResult(response1.data);
+                executeResult(response.data);
               }
-            });
-          } else {
-            if (currentlyLoadedIdentity !== "" && currentlyLoadedIdentity !== null) {
-              viamApi.identityLogin("previousaddeddevice").then((response1) => {
-                if (response1.data.code === "200") {
-                  const uuid = response1.data.data["Uuid"];
-                  const token = response1.data.data["Session"];
-                  viamApi.setSessionData(uuid, token);
-                  localStorage.setItem("uuid", uuid);
-                  localStorage.setItem("token", token);
-                  localStorage.setItem("authenticatedIdentity", currentlyLoadedIdentity.authentication.publicKey);
-                  window.currentlyAuthenticatedIdentity = loadedIdentities[currentlyLoadedIdentity.authentication.publicKey];
-                  setKeyForUUID(uuid, currentlyLoadedIdentity.authentication.publicKey);
-                  window.lastTimeGetProfile = 0;
-                  fn.apply(null, args).then((response2) => {
-                    executeResult(response2.data);
-                  });
-                } else {
-                  executeResult(response1.data);
-                }
-              });
-            } else {
-              executeResult(response.data);
-            }
-          }
+            })
+            .catch(console.warn);
         } else {
           executeResult(response.data);
         }
-- 
GitLab