add login session

This commit is contained in:
andrewprog97 2023-11-15 17:39:58 +03:00
parent 6ebe186370
commit 787dfca588
5 changed files with 92 additions and 9 deletions

63
package-lock.json generated
View file

@ -26,6 +26,7 @@
"@babel/core": "^7.21.4",
"@babel/preset-env": "^7.21.4",
"@babel/preset-react": "^7.18.6",
"@types/chrome": "^0.0.251",
"babel-loader": "^9.1.2",
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.7.3",
@ -3634,6 +3635,16 @@
"@types/node": "*"
}
},
"node_modules/@types/chrome": {
"version": "0.0.251",
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.251.tgz",
"integrity": "sha512-UF+yr0LEKWWGsKxQ5A3XOSF5SNoU1ctW3pXcWJPpT8OOUTEspYeaLU8spDKe+6xalXeMTS0TBrX1g0b6qlWmkw==",
"dev": true,
"dependencies": {
"@types/filesystem": "*",
"@types/har-format": "*"
}
},
"node_modules/@types/connect": {
"version": "3.4.35",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
@ -3695,6 +3706,21 @@
"@types/range-parser": "*"
}
},
"node_modules/@types/filesystem": {
"version": "0.0.35",
"resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz",
"integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==",
"dev": true,
"dependencies": {
"@types/filewriter": "*"
}
},
"node_modules/@types/filewriter": {
"version": "0.0.32",
"resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz",
"integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==",
"dev": true
},
"node_modules/@types/graceful-fs": {
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
@ -3703,6 +3729,12 @@
"@types/node": "*"
}
},
"node_modules/@types/har-format": {
"version": "1.2.15",
"resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz",
"integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==",
"dev": true
},
"node_modules/@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@ -19879,6 +19911,16 @@
"@types/node": "*"
}
},
"@types/chrome": {
"version": "0.0.251",
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.251.tgz",
"integrity": "sha512-UF+yr0LEKWWGsKxQ5A3XOSF5SNoU1ctW3pXcWJPpT8OOUTEspYeaLU8spDKe+6xalXeMTS0TBrX1g0b6qlWmkw==",
"dev": true,
"requires": {
"@types/filesystem": "*",
"@types/har-format": "*"
}
},
"@types/connect": {
"version": "3.4.35",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
@ -19940,6 +19982,21 @@
"@types/range-parser": "*"
}
},
"@types/filesystem": {
"version": "0.0.35",
"resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz",
"integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==",
"dev": true,
"requires": {
"@types/filewriter": "*"
}
},
"@types/filewriter": {
"version": "0.0.32",
"resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz",
"integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==",
"dev": true
},
"@types/graceful-fs": {
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
@ -19948,6 +20005,12 @@
"@types/node": "*"
}
},
"@types/har-format": {
"version": "1.2.15",
"resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz",
"integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==",
"dev": true
},
"@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",

View file

@ -45,6 +45,7 @@
"@babel/core": "^7.21.4",
"@babel/preset-env": "^7.21.4",
"@babel/preset-react": "^7.18.6",
"@types/chrome": "^0.0.251",
"babel-loader": "^9.1.2",
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.7.3",

View file

@ -1,3 +1,4 @@
/*global chrome*/
import { useContext, useEffect, useState, useCallback } from "react";
import { Router } from "react-chrome-extension-router";
import AppPlug from "./components/AppPlug/AppPlug";
@ -28,12 +29,19 @@ function App() {
const [confirmationModalOpen, setConfirmationModalOpen] = useState(false);
const [incorrectPassword, setIncorrectPassword] = useState(false);
const [loggedIn, setLoggedIn] = useState(getSessionLogIn());
const [loggedIn, setLoggedIn] = useState(false);
// Flags of display
// creatingPassword flag has an effect only in case of loggedIn flag is false.
// creatingPassword flag means whether to show the password create screen or existing password enter screen.
const creatingPassword = !passwordExists();
useEffect(() => {
async function loadLogin() {
setLoggedIn(await getSessionLogIn());
}
loadLogin();
}, []);
const executeTransfer = useCallback(async () => {
try {

View file

@ -1,3 +1,4 @@
/*global chrome*/
import Big from "big.js";
import sha256 from "sha256";
@ -42,14 +43,11 @@ export const passwordExists = () => {
return !!localStorage.getItem("hash");
}
export const getSessionLogIn = () => {
return !!sessionStorage.getItem("login");
export const getSessionLogIn = async () => {
// return !!localStorage.getItem("login");
return !!(await fetchBackground({ method: "GET_LOGIN" })).login;
}
export const setSessionLogIn = (login) => {
if (login) {
sessionStorage.setItem("login", true);
} else {
sessionStorage.removeItem("login");
}
export const setSessionLogIn = async (login) => {
await fetchBackground({ method: "SET_LOGIN", login: !!login })
}

View file

@ -15,6 +15,8 @@ chrome.runtime.onStartup.addListener(() => {
let pendingTx = null;
const userData = { login: false };
// eslint-disable-next-line no-undef
chrome.storage.local.get("pendingTx", (result) => {
if (result.pendingTx) {
@ -148,6 +150,17 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
sendResponse({ error: "No pending transaction" });
}
break;
case "SET_LOGIN": {
userData.login = request.login;
sendResponse({ success: true });
break;
}
case "GET_LOGIN": {
sendResponse({ login: userData.login });
break;
}
default:
console.error("Unknown message method:", request.method);