From 730c0d4058f6db3996790b9d6d09a91b0ce7202c Mon Sep 17 00:00:00 2001
From: mrfry <mr.fry@tutanota.com>
Date: Sun, 25 Apr 2021 09:50:00 +0200
Subject: [PATCH] All questions fixes

---
 src/pages/allQuestions.js | 52 +++++++++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 19 deletions(-)

diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js
index f0811b8..24473cb 100644
--- a/src/pages/allQuestions.js
+++ b/src/pages/allQuestions.js
@@ -75,7 +75,7 @@ export default function AllQuestions({ router }) {
   const [searchTerm, setSearchTerm] = useState('')
   const [activeSubjName, setActiveSubjName] = useState('')
   const [dbs, setDbs] = useState(null)
-  const [selectedDb, setSelectedDb] = useState('')
+  const [selectedDb, setSelectedDb] = useState(-1)
   const [data, setData] = useState(null)
   const [fetchingData, setFetchingData] = useState(false)
 
@@ -83,26 +83,34 @@ export default function AllQuestions({ router }) {
   const questionCount = data ? data.reduce(countReducer, 0) : 0
 
   useEffect(() => {
+    router.replace(`${router.asPath.replace('.html', '')}`, undefined, {
+      shallow: true,
+    })
     fetchDbs().then((res) => {
       setDbs(res)
     })
   }, [])
 
   useEffect(() => {
-    router.replace(`${router.asPath.replace('.html', '')}`, undefined, {
-      shallow: true,
-    })
+    const db = router.query.question ? decodeURIComponent(router.query.db) : ''
+
+    if (db) {
+      setSelectedDb(db)
+    }
+  }, [router.query.db])
+
+  useEffect(() => {
     const querySearch = router.query.question
       ? decodeURIComponent(router.query.question)
       : ''
-    const db = router.query.question ? decodeURIComponent(router.query.db) : ''
 
-    setSearchTerm(querySearch)
-    setSelectedDb(db)
+    if (querySearch) {
+      setSearchTerm(querySearch)
+    }
   }, [router.query.question])
 
   useEffect(() => {
-    if (dbs) {
+    if (dbs && selectedDb && (selectedDb === 'all' || dbs[selectedDb])) {
       if (selectedDb === 'all') {
         fetchAllData(dbs).then((res) => {
           setData(mergeData(res))
@@ -145,26 +153,33 @@ export default function AllQuestions({ router }) {
           </center>
           <div className={'selectContainer'}>
             <select
-              defaultValue={-1}
               value={selectedDb}
               onChange={(event) => {
                 const key = event.target.value
                 setData(null)
+                setSelectedDb(key)
+                if (parseInt(key) === -1) {
+                  router.replace(
+                    `${router.pathname}?question=${encodeURIComponent(
+                      searchTerm
+                    )}`,
+                    undefined,
+                    { shallow: true }
+                  )
+                  return
+                }
                 setFetchingData(true)
 
                 router.replace(
-                  `${router.pathname}${event.target.value &&
-                    '?question='}${encodeURIComponent(searchTerm)}&db=${key}`,
+                  `${router.pathname}?question=${encodeURIComponent(
+                    searchTerm
+                  )}&db=${key}`,
                   undefined,
                   { shallow: true }
                 )
-
-                setSelectedDb(key)
               }}
             >
-              <option disabled value={-1}>
-                {' Válassz egy adatbázist!'}
-              </option>
+              <option value={-1}>{' Válassz egy adatbázist!'}</option>
               {dbs.map((db, i) => {
                 return (
                   <option value={i} key={db.path}>
@@ -248,8 +263,7 @@ export default function AllQuestions({ router }) {
                 onChange={(event) => {
                   setSearchTerm(event.target.value)
                   router.replace(
-                    `${router.pathname}${event.target.value &&
-                      '?question='}${encodeURIComponent(
+                    `${router.pathname}?question=${encodeURIComponent(
                       event.target.value
                     )}&db=${selectedDb}`,
                     undefined,
@@ -305,7 +319,7 @@ export default function AllQuestions({ router }) {
                   window.open(`${constants.apiUrl}allqr.txt`, '_blank')
                 } else {
                   window.open(
-                    `${constants.apiUrl}allqr.txt?db=${selectedDb}`,
+                    `${constants.apiUrl}allqr.txt?db=${dbs[selectedDb].name}`,
                     '_blank'
                   )
                 }