diff --git a/Video 130/passop-mongo/src/components/Manager.jsx b/Video 130/passop-mongo/src/components/Manager.jsx
index e60c064a..28cb9e41 100644
--- a/Video 130/passop-mongo/src/components/Manager.jsx
+++ b/Video 130/passop-mongo/src/components/Manager.jsx
@@ -1,19 +1,18 @@
-import React from 'react'
-import { useRef, useState, useEffect } from 'react';
-import { ToastContainer, toast } from 'react-toastify';
+import { useRef, useState, useEffect } from 'react'
+import { ToastContainer, toast } from 'react-toastify'
+import 'react-toastify/dist/ReactToastify.css'
import { v4 as uuidv4 } from 'uuid';
-import 'react-toastify/dist/ReactToastify.css';
const Manager = () => {
const ref = useRef()
const passwordRef = useRef()
- const [form, setform] = useState({ site: "", username: "", password: "" })
+ const [form, setform] = useState({ site: '', username: '', password: '' })
const [passwordArray, setPasswordArray] = useState([])
const getPasswords = async () => {
- let req = await fetch("http://localhost:3000/")
+ let req = await fetch('http://localhost:3000/')
let passwords = await req.json()
- setPasswordArray(passwords)
+ setPasswordArray(passwords);
}
@@ -22,46 +21,23 @@ const Manager = () => {
}, [])
- const copyText = (text) => {
- toast('Copied to clipboard!', {
- position: "top-right",
- autoClose: 5000,
- hideProgressBar: false,
- closeOnClick: true,
- pauseOnHover: true,
- draggable: true,
- progress: undefined,
- theme: "dark",
- });
- navigator.clipboard.writeText(text)
+ const handleChange = (e) => {
+ setform({ ...form, [e.target.name]: e.target.value })
}
const showPassword = () => {
- passwordRef.current.type = "text"
- console.log(ref.current.src)
- if (ref.current.src.includes("icons/eyecross.png")) {
- ref.current.src = "icons/eye.png"
- passwordRef.current.type = "password"
- }
- else {
- passwordRef.current.type = "text"
- ref.current.src = "icons/eyecross.png"
+ if (ref.current.src.includes("/crosseye.svg")) {
+ ref.current.src = "/eye.svg"
+ passwordRef.current.type = 'password'
+ } else {
+ ref.current.src = "/crosseye.svg"
+ passwordRef.current.type = 'text'
}
-
}
const savePassword = async () => {
- if (form.site.length > 3 && form.username.length > 3 && form.password.length > 3) {
-
- // If any such id exists in the db, delete it
- await fetch("http://localhost:3000/", { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: form.id }) })
-
- setPasswordArray([...passwordArray, { ...form, id: uuidv4() }])
- await fetch("http://localhost:3000/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ ...form, id: uuidv4() }) })
-
- // Otherwise clear the form and show toast
- setform({ site: "", username: "", password: "" })
- toast('Password saved!', {
+ if (form.site === '' || form.username === '' || form.password === '') {
+ toast.error('Please fill all fields!', {
position: "top-right",
autoClose: 5000,
hideProgressBar: false,
@@ -69,144 +45,155 @@ const Manager = () => {
pauseOnHover: true,
draggable: true,
progress: undefined,
- theme: "dark",
+ theme: "light",
});
+ return;
}
- else {
- toast('Error: Password not saved!');
+ setPasswordArray([...passwordArray, { ...form, id: uuidv4() }])
+ //while editing delete the old password
+ if (form.id) { // Changed from form.ide to form.id
+ await fetch("http://localhost:3000/", {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ id: form.id })
+ })
}
-
+ // localStorage.setItem('passwords', JSON.stringify([...passwordArray, { ...form, id: uuidv4() }]))
+ await fetch("http://localhost:3000/", {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ ...form, id: uuidv4() })
+ })
+ setform({ site: '', username: '', password: '' })
+ toast.success('Password saved successfully!', {
+ position: "top-right",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "light",
+ });
}
-
const deletePassword = async (id) => {
- console.log("Deleting password with id ", id)
- let c = confirm("Do you really want to delete this password?")
- if (c) {
- setPasswordArray(passwordArray.filter(item => item.id !== id))
-
- await fetch("http://localhost:3000/", { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id }) })
-
- toast('Password Deleted!', {
- position: "top-right",
- autoClose: 5000,
- hideProgressBar: false,
- closeOnClick: true,
- draggable: true,
- progress: undefined,
- theme: "dark",
- });
- }
-
+ let confirmDelete = window.confirm("Are you sure you want to delete this password?");
+ if (!confirmDelete) return;
+ setPasswordArray(passwordArray.filter((item) => item.id !== id))
+ // localStorage.setItem('passwords', JSON.stringify(passwordArray.filter((item) => item.id !== id)))
+ let res = await fetch("http://localhost:3000/", {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ id: id })
+ })
+
+ toast.error('Password deleted successfully!', {
+ position: "top-right",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "light",
+ });
}
-
const editPassword = (id) => {
- setform({ ...passwordArray.filter(i => i.id === id)[0], id: id })
- setPasswordArray(passwordArray.filter(item => item.id !== id))
- }
-
- const handleChange = (e) => {
- setform({ ...form, [e.target.name]: e.target.value })
+ setform({
+ ...passwordArray.find((item) => item.id === id),
+ id: id // keep the id same for editing
+ })
+ setPasswordArray(passwordArray.filter((item) => item.id !== id))
}
-
return (
<>
-
Your own Password Manager
- -Your own password manager
+ +Site | -Username | -Password | +Site Name | +User Name | +User Password | Actions | |
---|---|---|---|---|---|---|---|
-
- {item.site}
-
- { copyText(item.site) }}>
-
- |
-
-
- {item.username}
-
- { copyText(item.username) }}>
-
- |
-
-
- {"*".repeat(item.password.length)}
-
- { copyText(item.password) }}>
-
- |
- - { editPassword(item.id) }}> + | {item.site} | +{item.username} | +{item.password} | +
+ {
+ editPassword(item.id)
+ }}>
|
@@ -216,7 +203,6 @@ const Manager = () => {