diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2024-03-07 23:37:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-07 23:37:33 +0100 |
commit | bd1fd5e079f59476673fff9d21a9e8449f7b7405 (patch) | |
tree | 51fe3b47fb8a19cca9c78810f2a59bf4dda818c9 /apps | |
parent | 7dd22b0c8362adb9546f97a76533e71b96aef0f0 (diff) | |
parent | e453b700b9740ff6ae27dcced423cad73104ecb8 (diff) | |
download | nextcloud-server-bd1fd5e079f59476673fff9d21a9e8449f7b7405.tar.gz nextcloud-server-bd1fd5e079f59476673fff9d21a9e8449f7b7405.zip |
Merge pull request #44062 from nextcloud/fix/preview-cancel
fix(files): properly reset preview component
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/src/components/FileEntry/FileEntryPreview.vue | 17 | ||||
-rw-r--r-- | apps/files/src/components/FileEntryMixin.ts | 9 |
2 files changed, 19 insertions, 7 deletions
diff --git a/apps/files/src/components/FileEntry/FileEntryPreview.vue b/apps/files/src/components/FileEntry/FileEntryPreview.vue index 25b27d2e889..d1bb78a105e 100644 --- a/apps/files/src/components/FileEntry/FileEntryPreview.vue +++ b/apps/files/src/components/FileEntry/FileEntryPreview.vue @@ -39,7 +39,7 @@ :class="{'files-list__row-icon-preview--loaded': backgroundFailed === false}" loading="lazy" :src="previewUrl" - @error="backgroundFailed = true" + @error="onBackgroundError" @load="backgroundFailed = false"> <FileIcon v-else v-once /> @@ -219,12 +219,21 @@ export default Vue.extend({ }, methods: { + // Called from FileEntry reset() { - if (this.backgroundFailed === true && this.$refs.previewImg) { + // Reset background state to cancel any ongoing requests + this.backgroundFailed = undefined + if (this.$refs.previewImg) { this.$refs.previewImg.src = '' } - // Reset background state - this.backgroundFailed = undefined + }, + + onBackgroundError(event) { + // Do not fail if we just reset the background + if (event.target?.src === '') { + return + } + this.backgroundFailed = true }, t, diff --git a/apps/files/src/components/FileEntryMixin.ts b/apps/files/src/components/FileEntryMixin.ts index 69638d33212..5a20eb1ecc1 100644 --- a/apps/files/src/components/FileEntryMixin.ts +++ b/apps/files/src/components/FileEntryMixin.ts @@ -177,8 +177,10 @@ export default defineComponent({ * When the source changes, reset the preview * and fetch the new one. */ - source() { - this.resetState() + source(a: Node, b: Node) { + if (a.source !== b.source) { + this.resetState() + } }, }, @@ -191,7 +193,8 @@ export default defineComponent({ // Reset loading state this.loading = '' - this.$refs.preview.reset() + // Reset the preview state + this.$refs?.preview?.reset?.() // Close menu this.openedMenu = false |