Skip to content
Snippets Groups Projects

Resolve "Login - logout shows Not authenticated error randomly"

1 unresolved thread
2 files
+ 44
70
Compare changes
  • Side-by-side
  • Inline
Files
2
import {createDeviceHash} from '../utilities/appUtility';
import {LOGIN_MODES} from '../constants';
const libmime = require('libmime');
const QRCode = require('qrcode');
@@ -1399,7 +1400,6 @@ const handleIdentityLogin = async (identity, uuid, token) => {
} catch (error) {
console.warn(error);
}
};
function executeRestfulFunction(type, that, fn, ...args) {
@@ -1735,77 +1735,46 @@ const connection = Penpal.connectToParent({
});
});
},
login(loginIdentity, mode, code, actionID) {
return new Penpal.Promise(async setIdentityResult => {
if (window.loadedIdentities[loginIdentity.authentication.publicKey] === null) {
setIdentityResult({"data" : "",
"code" : "400",
"status" : "Identity not loaded"
})
}
const deviceHash = await createDeviceHash(loginIdentity.authentication.publicKey);
window.viamApi.setSessionData('', '', deviceHash);
window.viamApi.setIdentity(loginIdentity.authentication.publicKey);
executeRestfulFunction("public", viamApi, viamApi.identityLogin, mode, code, actionID).then(async executeResult => {
switch (mode) {
case "sms" : {
if (executeResult.code === "200") {
const uuid = executeResult.data["Uuid"];
const token = executeResult.data["Session"];
await handleIdentityLogin(loginIdentity, uuid, token);
delete executeResult.data["Uuid"];
delete executeResult.data["Session"];
getProfileData(loginIdentity).then(executeResult1 => {
setIdentityInLocalStorage(loginIdentity).then(() => {
setIdentityResult(executeResult);
});
});
} else {
setIdentityResult(executeResult);
}
break;
}
case "previousaddeddevice" : {
if (executeResult.code === "200") {
const uuid = executeResult.data["Uuid"];
const token = executeResult.data["Session"];
await handleIdentityLogin(loginIdentity, uuid, token);
delete executeResult.data["Uuid"];
delete executeResult.data["Session"];
getProfileData(loginIdentity).then(executeResult1 => {
setIdentityResult(executeResult);
});
} else {
setIdentityResult(executeResult);
}
break;
}
case "newdevice" : {
if (executeResult.code === "200") {
var actionID = executeResult.data["ActionID"];
var QrCode = executeResult.data["QrCode"];
QRCode.toDataURL(actionID + "," + QrCode, function (err, url) {
executeResult.data["image"] = url;
setIdentityResult(executeResult);
})
} else {
setIdentityResult(executeResult);
}
break;
}
login: async (loginIdentity, mode, requestCode, requestActionID) => {
if (!window.loadedIdentities[loginIdentity.authentication.publicKey]) {
return {
data: "",
code: "400",
status: "Identity not loaded"
};
}
default : {
setIdentityResult(executeResult);
break;
}
const deviceHash = await createDeviceHash(loginIdentity.authentication.publicKey);
window.viamApi.setSessionData('', '', deviceHash);
window.viamApi.setIdentity(loginIdentity.authentication.publicKey);
const identityLoginResponse =
await executeRestfulFunction(
"public",
window.viamApi,
window.viamApi.identityLogin,
mode, requestCode,
requestActionID
);
const { code, data } = identityLoginResponse;
const responseToClient = Object.assign({}, identityLoginResponse);
if (code === "200") {
if (mode === LOGIN_MODES.SMS || mode === LOGIN_MODES.PREVIOUSLY_ADDED_DEVICE) {
await handleIdentityLogin(loginIdentity, data.Uuid, data.Session, deviceHash);
await getProfileData(loginIdentity);
if (mode === LOGIN_MODES.PREVIOUSLY_ADDED_DEVICE) {
await setIdentityInLocalStorage(loginIdentity);
}
});
});
} else if (mode === LOGIN_MODES.NEW_DEVICE) {
const dataUrl = await QRCode.toDataURL(`${data.ActionID},${data.QrCode}`);
Object.assign(responseToClient.data, { image: dataUrl });
}
}
return responseToClient;
},
identityAddNewDevice() {
return new Penpal.Promise(result => {
Loading