mirror of
https://gitlab.com/MrFry/qmining-page
synced 2025-04-01 20:23:44 +02:00
Caching fetched resources
This commit is contained in:
parent
7e93e41edc
commit
3daeef184a
12 changed files with 213 additions and 85 deletions
|
@ -70,7 +70,7 @@ function fetchDbs() {
|
|||
})
|
||||
}
|
||||
|
||||
export default function AllQuestions({ router }) {
|
||||
export default function AllQuestions({ router, globalState, setGlobalState }) {
|
||||
const [subjectsShowing, setSubjectsShowing] = useState(false)
|
||||
const [searchTerm, setSearchTerm] = useState('')
|
||||
const [activeSubjName, setActiveSubjName] = useState('')
|
||||
|
@ -112,15 +112,60 @@ export default function AllQuestions({ router }) {
|
|||
useEffect(() => {
|
||||
if (dbs && selectedDb && (selectedDb === 'all' || dbs[selectedDb])) {
|
||||
if (selectedDb === 'all') {
|
||||
fetchAllData(dbs).then((res) => {
|
||||
setData(mergeData(res))
|
||||
const hasAll =
|
||||
globalState.dbs &&
|
||||
dbs.every((db) => {
|
||||
return (
|
||||
Object.keys(globalState.dbs).findIndex((key) => {
|
||||
return db.name === key
|
||||
}) !== -1
|
||||
)
|
||||
})
|
||||
|
||||
if (hasAll) {
|
||||
const asd = Object.keys(globalState.dbs).map((key) => {
|
||||
return {
|
||||
dbName: key,
|
||||
data: globalState.dbs[key],
|
||||
}
|
||||
})
|
||||
setData(mergeData(asd))
|
||||
setFetchingData(false)
|
||||
})
|
||||
} else {
|
||||
fetchAllData(dbs).then((res) => {
|
||||
setData(mergeData(res))
|
||||
setFetchingData(false)
|
||||
|
||||
let cacheRes = {}
|
||||
res.forEach((db) => {
|
||||
cacheRes = {
|
||||
...cacheRes,
|
||||
[db.dbName]: db.data,
|
||||
}
|
||||
})
|
||||
setGlobalState({
|
||||
dbs: cacheRes,
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
fetchData(dbs[selectedDb]).then((res) => {
|
||||
setData(res.data)
|
||||
const selected = dbs[selectedDb]
|
||||
if (globalState.dbs && globalState.dbs[selected.name]) {
|
||||
setData(globalState.dbs[selected.name])
|
||||
setFetchingData(false)
|
||||
})
|
||||
} else {
|
||||
fetchData(dbs[selectedDb]).then((res) => {
|
||||
setData(res.data)
|
||||
setFetchingData(false)
|
||||
|
||||
setGlobalState({
|
||||
dbs: {
|
||||
...globalState.dbs,
|
||||
[res.dbName]: res.data,
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [selectedDb, dbs])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue