handle errors when traversing
This commit is contained in:
parent
1679df6e18
commit
007e412630
1 changed files with 13 additions and 2 deletions
|
@ -178,7 +178,18 @@ export async function* traverseFolder(path: string): AsyncGenerator<
|
||||||
const itemLists = await Promise.all(
|
const itemLists = await Promise.all(
|
||||||
folderPaths.map(fp =>
|
folderPaths.map(fp =>
|
||||||
(async fp => {
|
(async fp => {
|
||||||
const data = await fetcher(`/api?path=${fp}`, hashedToken ?? undefined)
|
let data: any
|
||||||
|
try {
|
||||||
|
data = await fetcher(`/api?path=${fp}`, hashedToken ?? undefined)
|
||||||
|
} catch (error: any) {
|
||||||
|
// Skip errors caused by the client
|
||||||
|
if (Math.floor(error.response.status / 100) === 4) {
|
||||||
|
return null
|
||||||
|
} else {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (data && data.folder) {
|
if (data && data.folder) {
|
||||||
return data.folder.value.map((c: any) => {
|
return data.folder.value.map((c: any) => {
|
||||||
const p = `${fp === '/' ? '' : fp}/${encodeURIComponent(c.name)}`
|
const p = `${fp === '/' ? '' : fp}/${encodeURIComponent(c.name)}`
|
||||||
|
@ -191,7 +202,7 @@ export async function* traverseFolder(path: string): AsyncGenerator<
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
const items = itemLists.flat() as { path: string; meta: any; isFolder: boolean }[]
|
const items = itemLists.filter(Boolean).flat() as { path: string; meta: any; isFolder: boolean }[]
|
||||||
yield* items
|
yield* items
|
||||||
folderPaths = items.filter(i => i.isFolder).map(i => i.path)
|
folderPaths = items.filter(i => i.isFolder).map(i => i.path)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue