Merge pull request #45432 from nextcloud/backport/44062/stable28

[stable28] fix(files): properly reset preview component
This commit is contained in:
Ferdinand Thiessen 2024-05-27 19:34:22 +02:00 committed by GitHub
commit 5e24a34103
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 22 additions and 10 deletions

View file

@ -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 />
@ -218,12 +218,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,

View file

@ -175,8 +175,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()
}
},
},
@ -189,7 +191,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

4
dist/files-main.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long