1
|
- [{"/home/yuval/code/jobseeker/src/reportWebVitals.js":"1","/home/yuval/code/jobseeker/src/components/Button.js":"2","/home/yuval/code/jobseeker/src/App.js":"3","/home/yuval/code/jobseeker/src/components/Job.js":"4","/home/yuval/code/jobseeker/src/components/AddJob.js":"5","/home/yuval/code/jobseeker/src/components/Header.js":"6","/home/yuval/code/jobseeker/src/components/Jobs.js":"7","/home/yuval/code/jobseeker/src/components/Footer.js":"8"},{"size":362,"mtime":1659859065257,"results":"9","hashOfConfig":"10"},{"size":408,"mtime":1659859065257,"results":"11","hashOfConfig":"10"},{"size":4012,"mtime":1662209344150,"results":"12","hashOfConfig":"10"},{"size":428,"mtime":1662107482571,"results":"13","hashOfConfig":"10"},{"size":1361,"mtime":1662107505887,"results":"14","hashOfConfig":"10"},{"size":698,"mtime":1660027301626,"results":"15","hashOfConfig":"10"},{"size":249,"mtime":1662107482591,"results":"16","hashOfConfig":"10"},{"size":203,"mtime":1661097967182,"results":"17","hashOfConfig":"10"},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"ccwxyo",{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22","messages":"23","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"24","usedDeprecatedRules":"25"},{"filePath":"26","messages":"27","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32","messages":"33","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/yuval/code/jobseeker/src/reportWebVitals.js",[],"/home/yuval/code/jobseeker/src/components/Button.js",[],"/home/yuval/code/jobseeker/src/App.js",["36","37","38","39"],"import { useState, useEffect } from 'react'\nimport { BrowserRouter as Router, Route, Routes } from 'react-router-dom'\nimport Header from './components/Header'\nimport Footer from './components/Footer'\nimport Jobs from './components/Jobs'\nimport AddJob from './components/AddJob'\nimport About from './components/About'\n\n\nimport { initializeApp } from 'firebase/app';\nimport { getFirestore } from \"@firebase/firestore\";\n\nimport {\n collection,\n getDocs,\n addDoc,\n updateDoc,\n deleteDoc,\n doc,\n setDoc\n} from \"firebase/firestore\";// Follow this pattern to import other Firebase services\n// import { } from 'firebase/<service>';\n\n// TODO: Replace the following with your app's Firebase project configuration\nconst firebaseConfig = {\n apiKey: \"AIzaSyBZAyI_ON7F4VEZ_9k1ETzF4_k6qcBJ1uo\",\n authDomain: \"yuveta2-166505.firebaseapp.com\",\n databaseURL: \"https://yuveta2-166505-default-rtdb.europe-west1.firebasedatabase.app\",\n projectId: \"yuveta2-166505\",\n storageBucket: \"yuveta2-166505.appspot.com\",\n messagingSenderId: \"238877844764\",\n appId: \"1:238877844764:web:0b49af2563aa55139806d9\"\n};\n\nconst app = initializeApp(firebaseConfig);\nconst db = getFirestore(app);\n\n\n\nconst jobsCollectionRef = collection(db, \"jobs\");\n\n\nconst App = () => {\n const [showAddJob, setShowAddJob] = useState(false)\n const [jobs, setJobs] = useState([])\n\n useEffect(() => {\n const getJobs = async () => {\n const jobsFromServer = await fetchJobs()\n setJobs(jobsFromServer)\n }\n\n getJobs()\n }, [])\n\n // Fetch Jobs\n const fetchJobs = async () => {\n const JobsColSnapshot = await getDocs(jobsCollectionRef);\n const jobsList = JobsColSnapshot.docs.map(doc => doc.data());\n return jobsList;\n\n\n // const res = await fetch('http://localhost:5000/jobs')\n // const data = await res.json()\n\n // return data\n }\n\n // Fetch Job\n const fetchJob = async (id) => {\n\n // const res = await fetch(`http://localhost:5000/jobs/${id}`)\n // const data = await res.json()\n\n const data = doc(db, \"jobs\", id);\n\n\n return data\n }\n\n // Add Job\n const addJob = async (job) => {\n\n\n const id = String(Math.floor(Math.random() * 10000) + 1);\n const newJob = { id, ...job }\n\n // Add a new document in collection \"cities\"\n // await addDoc(jobsCollectionRef, newJob)\n await setDoc(doc(db, \"jobs\", newJob.id), newJob);\n\n // const res = await fetch('http://localhost:5000/jobs', {\n // method: 'POST',\n // headers: {\n // 'Content-type': 'application/json',\n // },\n // body: JSON.stringify(job),\n // })\n\n // const data = await res.json()\n const data = await fetchJobs()\n const jobsFromServer = await fetchJobs()\n setJobs(jobsFromServer)\n\n // TODO why, if we fetch jobs?\n //setJobs([...jobs, data])\n\n }\n\n // Delete Job\n const deleteJob = async (id) => {\n\n const jobDoc = doc(db, \"jobs\", id);\n await deleteDoc(jobDoc);\n setJobs(jobs.filter((job) => job.id !== id))\n\n // const res = await fetch(`http://localhost:5000/jobs/${id}`, {\n // method: 'DELETE',\n // })\n // //We should control the response status to decide if we will change the state or not.\n // res.status === 200\n // ? setJobs(jobs.filter((job) => job.id !== id))\n // : alert('Error Deleting This Job')\n }\n\n\n return (\n <Router>\n <div className='container'>\n <Header\n onAdd={() => setShowAddJob(!showAddJob)}\n showAdd={showAddJob}\n />\n <Routes>\n <Route\n path='/'\n element={\n <>\n {showAddJob && <AddJob onAdd={addJob} />}\n {jobs.length > 0 ? (\n <Jobs\n jobs={jobs}\n onDelete={deleteJob}\n />\n ) : (\n 'No Jobs To Show'\n )}\n </>\n }\n />\n <Route path='/about' element={<About />} />\n </Routes>\n <Footer />\n </div>\n </Router>\n )\n}\n\nexport default App\n",["40","41"],"/home/yuval/code/jobseeker/src/components/Job.js",[],"/home/yuval/code/jobseeker/src/components/AddJob.js",[],"/home/yuval/code/jobseeker/src/components/Header.js",[],"/home/yuval/code/jobseeker/src/components/Jobs.js",[],"/home/yuval/code/jobseeker/src/components/Footer.js",[],{"ruleId":"42","severity":1,"message":"43","line":16,"column":3,"nodeType":"44","messageId":"45","endLine":16,"endColumn":9},{"ruleId":"42","severity":1,"message":"46","line":17,"column":3,"nodeType":"44","messageId":"45","endLine":17,"endColumn":12},{"ruleId":"42","severity":1,"message":"47","line":70,"column":9,"nodeType":"44","messageId":"45","endLine":70,"endColumn":17},{"ruleId":"42","severity":1,"message":"48","line":101,"column":11,"nodeType":"44","messageId":"45","endLine":101,"endColumn":15},{"ruleId":"49","replacedBy":"50"},{"ruleId":"51","replacedBy":"52"},"no-unused-vars","'addDoc' is defined but never used.","Identifier","unusedVar","'updateDoc' is defined but never used.","'fetchJob' is assigned a value but never used.","'data' is assigned a value but never used.","no-native-reassign",["53"],"no-negated-in-lhs",["54"],"no-global-assign","no-unsafe-negation"]
|