Merge pull request #40352 from nextcloud/bugfix/version-events-26

This commit is contained in:
Julius Härtl 2023-09-15 10:53:22 +02:00 committed by GitHub
commit 9fc79b3a9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 40 additions and 8 deletions

View file

@ -19,7 +19,7 @@
<div>
<NcListItem class="version"
:title="versionLabel"
:href="downloadURL"
@click="openVersion"
:force-display-actions="true"
data-files-versions-version>
<template #icon>
@ -122,6 +122,7 @@ import { translate } from '@nextcloud/l10n'
import { joinPaths } from '@nextcloud/paths'
import { generateUrl } from '@nextcloud/router'
import { loadState } from '@nextcloud/initial-state'
import { emit } from '@nextcloud/event-bus'
export default {
name: 'Version',
@ -238,6 +239,19 @@ export default {
},
},
methods: {
openVersion(e) {
e.preventDefault()
const openVersionEvent = {
preventDefault: false,
fileInfo: this.fileInfo,
version: this.version,
}
emit('files_versions:view:open', openVersionEvent)
if (openVersionEvent.preventDefault) {
return
}
window.location.href = this.downloadURL
},
openVersionLabelModal() {
this.showVersionLabelForm = true
this.$nextTick(() => {

View file

@ -33,6 +33,7 @@
import { showError, showSuccess } from '@nextcloud/dialogs'
import { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.js'
import Version from '../components/Version.vue'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
export default {
name: 'VersionTab',
@ -47,6 +48,12 @@ export default {
loading: false,
}
},
mounted() {
subscribe('files_versions:restore:restored', this.fetchVersions)
},
beforeUnmount() {
unsubscribe('files_versions:restore:restored', this.fetchVersions)
},
computed: {
/**
* Order versions by mtime.
@ -114,6 +121,16 @@ export default {
mtime: version.mtime,
}
const restoreStartedEventState = {
preventDefault: false,
fileInfo: this.fileInfo,
version,
}
emit('files_versions:restore:requested', restoreStartedEventState)
if (restoreStartedEventState.preventDefault) {
return
}
try {
await restoreVersion(version)
if (version.label !== '') {
@ -123,10 +140,11 @@ export default {
} else {
showSuccess(t('files_versions', 'Version restored'))
}
await this.fetchVersions()
emit('files_versions:restore:restored', version)
} catch (exception) {
this.fileInfo = oldFileInfo
showError(t('files_versions', 'Could not restore version'))
emit('files_versions:restore:failed', version)
}
},

4
dist/core-common.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long