diff --git a/src/components/Question.js b/src/components/Question.js index a8b30dd..69ea0d2 100644 --- a/src/components/Question.js +++ b/src/components/Question.js @@ -1,6 +1,9 @@ import React from 'react' function highlightText(text, toHighlight) { + if (!text) { + return '' + } const re = new RegExp(toHighlight, 'gi') return text.replace(re, `${toHighlight}`) } diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js index 6516b3d..f0811b8 100644 --- a/src/pages/allQuestions.js +++ b/src/pages/allQuestions.js @@ -83,21 +83,40 @@ export default function AllQuestions({ router }) { const questionCount = data ? data.reduce(countReducer, 0) : 0 useEffect(() => { - router.replace(`${router.asPath.replace('.html', '')}`, undefined, { - shallow: true, - }) - // TODO: fix dis - const querySearch = router.query.question - ? decodeURIComponent(router.query.question) - : '' - - console.log(querySearch) - fetchDbs().then((res) => { setDbs(res) }) }, []) + useEffect(() => { + router.replace(`${router.asPath.replace('.html', '')}`, undefined, { + shallow: true, + }) + const querySearch = router.query.question + ? decodeURIComponent(router.query.question) + : '' + const db = router.query.question ? decodeURIComponent(router.query.db) : '' + + setSearchTerm(querySearch) + setSelectedDb(db) + }, [router.query.question]) + + useEffect(() => { + if (dbs) { + if (selectedDb === 'all') { + fetchAllData(dbs).then((res) => { + setData(mergeData(res)) + setFetchingData(false) + }) + } else { + fetchData(dbs[selectedDb]).then((res) => { + setData(res.data) + setFetchingData(false) + }) + } + } + }, [selectedDb, dbs]) + const renderDbSelector = () => { if (dbs) { return ( @@ -127,23 +146,20 @@ export default function AllQuestions({ router }) {