Caching fetched resources

This commit is contained in:
mrfry
2021-06-09 09:48:31 +02:00
parent 7e93e41edc
commit 3daeef184a
12 changed files with 213 additions and 85 deletions
+37 -25
View File
@@ -184,7 +184,12 @@ function uploadFile(dir, file) {
})
}
export default function UserFiles({ router, globalData }) {
export default function UserFiles({
router,
globalData,
globalState,
setGlobalState,
}) {
const userId = globalData.userId
const [dirs, setDirs] = useState()
const [sortBy, setSortBy] = useState('name')
@@ -210,23 +215,48 @@ export default function UserFiles({ router, globalData }) {
setSearchTerm()
if (router.query.dir) {
getDir(dir)
} else {
getRootDir()
}
}, [router.query.dir])
const getDir = (dir, nocache) => {
if (!nocache && globalState.userFiles && globalState.userFiles[dir]) {
setDirs(globalState.userFiles[dir])
} else {
listUserDir(dir)
.then((res) => {
setDirs(res.files)
setGlobalState({
userFiles: {
...globalState.userFiles,
[dir]: res.files,
},
})
})
.catch((res) => {
alert(res.msg)
})
}
}
const getRootDir = (nocache) => {
if (!nocache && globalState.userFilesRoot) {
setDirs(globalState.userFilesRoot)
} else {
listUserDir()
.then((res) => {
setGlobalState({
userFilesRoot: res.dirs,
})
setDirs(res.dirs)
})
.catch((res) => {
alert(res.msg)
})
}
}, [router.query.dir])
}
const dirSorter = (a, b) => {
if (a[sortBy] < b[sortBy]) {
@@ -391,13 +421,7 @@ export default function UserFiles({ router, globalData }) {
e.stopPropagation()
if (confirm(`Biztos törlöd '${name}'-t ?`)) {
deleteFile(currDir, name).then(() => {
listUserDir(currDir)
.then((res) => {
setDirs(res.files)
})
.catch((res) => {
alert(res.msg)
})
getDir(currDir, true)
})
}
}}
@@ -479,14 +503,8 @@ export default function UserFiles({ router, globalData }) {
setUploading(true)
uploadFile(currDir, file).then(() => {
setUploading(false)
listUserDir(currDir)
.then((res) => {
setDirs(res.files)
setAddingNew(null)
})
.catch((res) => {
alert(res.msg)
})
setAddingNew(null)
getDir(currDir, true)
})
}}
>
@@ -507,14 +525,8 @@ export default function UserFiles({ router, globalData }) {
setUploading(true)
newSubj(newSubjName).then(() => {
setUploading(false)
listUserDir()
.then((res) => {
setDirs(res.dirs)
setAddingNew(null)
})
.catch((res) => {
alert(res.msg)
})
setAddingNew(null)
getRootDir()
})
}}
>