Skip to content

Commit 6db4f6e

Browse files
diocasrodcoffani
authored andcommitted
feat: show UI error when listing too large trashbin
1 parent c2ca1c4 commit 6db4f6e

File tree

4 files changed

+43
-8
lines changed

4 files changed

+43
-8
lines changed

packages/web-app-files/src/services/folder.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
FolderLoaderSharedWithOthers,
3030
FolderLoaderTrashbin
3131
} from './folder/index'
32+
import { UiError } from '@ownclouders/web-client'
3233

3334
export * from './folder/types'
3435

@@ -98,6 +99,9 @@ export class FolderService {
9899
try {
99100
yield loader.getTask(context).perform(...args)
100101
} catch (e) {
102+
if (e instanceof UiError) {
103+
throw e
104+
}
101105
console.error(e)
102106
}
103107
})

packages/web-app-files/src/views/spaces/GenericTrash.vue

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,24 @@
2121
</div>
2222
</div>
2323
<no-content-message
24-
v-if="isEmpty"
24+
v-if="recycleError"
25+
id="files-trashbin-error"
26+
class="files-empty"
27+
icon="error-warning"
28+
icon-fill-type="line"
29+
>
30+
<template #message>
31+
<span
32+
>Your trash bin returned too many entries and cannot be displayed, or the date range is too long. <br />Please filter
33+
by date or check the
34+
<a href="https://cernbox.docs.cern.ch/advanced/restore_from_trash/" target="_blank"
35+
>documentation</a
36+
>.</span
37+
>
38+
</template>
39+
</no-content-message>
40+
<no-content-message
41+
v-else-if="isEmpty"
2542
id="files-trashbin-empty"
2643
class="files-empty"
2744
icon="delete-bin-7"
@@ -136,6 +153,8 @@ export default defineComponent({
136153
data.range?.from && data.range?.to ? { from: data.range.from, to: data.range.to } : null
137154
performLoaderTask()
138155
}
156+
const recycleError = ref(false)
157+
139158
140159
let loadResourcesEventToken: string
141160
const noContentMessage = computed(() => {
@@ -154,12 +173,17 @@ export default defineComponent({
154173
155174
const resourcesViewDefaults = useResourcesViewDefaults<Resource, any, any[]>()
156175
const performLoaderTask = async () => {
157-
await resourcesViewDefaults.loadResourcesTask.perform(props.space, unref(dateFilter))
158-
resourcesViewDefaults.refreshFileListHeaderPosition()
159-
resourcesViewDefaults.scrollToResourceFromRoute(
160-
unref(resourcesViewDefaults.paginatedResources),
161-
'files-app-bar'
162-
)
176+
recycleError.value = false
177+
try {
178+
await resourcesViewDefaults.loadResourcesTask.perform(props.space, unref(dateFilter))
179+
resourcesViewDefaults.refreshFileListHeaderPosition()
180+
resourcesViewDefaults.scrollToResourceFromRoute(
181+
unref(resourcesViewDefaults.paginatedResources),
182+
'files-app-bar'
183+
)
184+
} catch (e) {
185+
recycleError.value = true
186+
}
163187
}
164188
165189
onMounted(() => {
@@ -177,7 +201,8 @@ export default defineComponent({
177201
...resourcesViewDefaults,
178202
user,
179203
noContentMessage,
180-
rangeChanged
204+
rangeChanged,
205+
recycleError
181206
}
182207
},
183208

packages/web-client/src/errors.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,5 @@ export class DavHttpError extends HttpError {
2424
this.errorCode = errorCode
2525
}
2626
}
27+
28+
export class UiError extends Error {}

packages/web-client/src/webdav/listFiles.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { DAV, DAVRequestOptions } from './client'
1616
import { GetPathForFileIdFactory } from './getPathForFileId'
1717
import { WebDavOptions } from './types'
1818
import { getWebDavPath } from './utils'
19+
import { UiError } from '../errors'
1920

2021
export type ListFilesOptions = {
2122
depth?: number
@@ -129,6 +130,9 @@ export const ListFilesFactory = (
129130
if (e.statusCode === 404 && fileId) {
130131
return listFilesCorrectedPath()
131132
}
133+
if (e.statusCode === 400) {
134+
throw new UiError()
135+
}
132136
throw e
133137
}
134138
}

0 commit comments

Comments
 (0)