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' ) }