diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache new file mode 100644 index 0000000..1158f6a --- /dev/null +++ b/.firebase/hosting.ZGlzdA.cache @@ -0,0 +1,5 @@ +404.html,1678441268921,daa499dd96d8229e73235345702ba32f0793f0c8e5c0d30e40e37a5872be57aa +index.html,1678440698830,d34dfe50b125d1b5405dc96da6c74edb9acdd2c5599204c9c0c68831b02526ff +assets/index-f0936bbe.css,1678440698830,d1cc6c72221b3819411737fbb6f5d25dc03de49db1dcb196843d3cecdcb394a1 +fav.svg,1678440669287,1e17e437405ca216fba974eabe397cc0e99dcd7e2605e57d86161f986e67147f +assets/index-492b6872.js,1678440698830,c5a35310a0d6f602ffd6851fe2392badd05a7f0b0bf225e6ac73ddbc4292806a diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..2c93ec8 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "keygen-89601" + } +} diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..059fe4f --- /dev/null +++ b/firebase.json @@ -0,0 +1,10 @@ +{ + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ] + } +} diff --git a/index.html b/index.html index e0d1c84..bf8eb84 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,22 @@ - - - - - Vite + React + TS - - -
- - + + + + + + + + Password Generator + + +
+ + diff --git a/package.json b/package.json index 36606c6..5be6d09 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,25 @@ { - "name": "securekeygen", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview" - }, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.8.2" - }, - "devDependencies": { - "@types/node": "^18.14.6", - "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", - "@vitejs/plugin-react-swc": "^3.0.0", - "sass": "^1.58.3", - "typescript": "^4.9.3", - "vite": "^4.1.0" - } + "name": "securekeygen", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.8.2" + }, + "devDependencies": { + "@types/node": "^18.14.6", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react-swc": "^3.0.0", + "sass": "^1.58.3", + "typescript": "^4.9.3", + "vite": "^4.1.0" + } } diff --git a/public/fav.svg b/public/fav.svg new file mode 100644 index 0000000..63e04e1 --- /dev/null +++ b/public/fav.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Generator.tsx b/src/Generator.tsx index 7f54ad2..cb3934e 100644 --- a/src/Generator.tsx +++ b/src/Generator.tsx @@ -7,6 +7,7 @@ const colorGood = "#31f399 "; const colorBest = "#1fff3d"; export default function Generator() { + let initalLoaded: boolean = false; const [password, setPassword] = useState(""); const [length, setLength] = useState(64); @@ -37,6 +38,34 @@ export default function Generator() { } } + function saveToLocalStorage() { + localStorage.setItem("length", length.toString()); + localStorage.setItem("numbers", numbers.toString()); + localStorage.setItem("symbols", symbols.toString()); + localStorage.setItem("uppercase", uppercase.toString()); + localStorage.setItem("lowercase", lowercase.toString()); + localStorage.setItem("similar", similar.toString()); + localStorage.setItem("ambiguous", ambiguous.toString()); + } + + function loadFromLocalStorage() { + const length = localStorage.getItem("length") ?? "64"; + const numbers = localStorage.getItem("numbers") ?? "true"; + const symbols = localStorage.getItem("symbols") ?? "true"; + const uppercase = localStorage.getItem("uppercase") ?? "true"; + const lowercase = localStorage.getItem("lowercase" ?? "true"); + const similar = localStorage.getItem("similar") ?? "false"; + const ambiguous = localStorage.getItem("ambiguous") ?? "false"; + + setLength(parseInt(length)); + setNumbers(numbers === "true"); + setSymbols(symbols === "true"); + setUppercase(uppercase === "true"); + setLowercase(lowercase === "true"); + setSimilar(similar === "true"); + setAmbiguous(ambiguous === "true"); + } + function generate() { setPassword( generatePassword({ @@ -49,9 +78,15 @@ export default function Generator() { excludeAmbiguous: ambiguous, }) ); + saveToLocalStorage(); } useEffect(() => { + if (!initalLoaded) { + loadFromLocalStorage(); + initalLoaded = true; + } + generate(); }, []); diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file