@@ -39,6 +39,7 @@ import { showError, showSuccess } from '@nextcloud/dialogs'
3939import isMobile from ' @nextcloud/vue/dist/Mixins/isMobile.js'
4040import { fetchVersions , deleteVersion , restoreVersion , setVersionLabel } from ' ../utils/versions.js'
4141import Version from ' ../components/Version.vue'
42+ import { emit , subscribe , unsubscribe } from ' @nextcloud/event-bus'
4243
4344export default {
4445 name: ' VersionTab' ,
@@ -57,6 +58,12 @@ export default {
5758 loading: false ,
5859 }
5960 },
61+ mounted () {
62+ subscribe (' files_versions:restore:restored' , this .fetchVersions )
63+ },
64+ beforeUnmount () {
65+ unsubscribe (' files_versions:restore:restored' , this .fetchVersions )
66+ },
6067 computed: {
6168 /**
6269 * Order versions by mtime.
@@ -163,6 +170,16 @@ export default {
163170 mtime: version .mtime ,
164171 }
165172
173+ const restoreStartedEventState = {
174+ preventDefault: false ,
175+ fileInfo: this .fileInfo ,
176+ version,
177+ }
178+ emit (' files_versions:restore:requested' , restoreStartedEventState)
179+ if (restoreStartedEventState .preventDefault ) {
180+ return
181+ }
182+
166183 try {
167184 await restoreVersion (version)
168185 if (version .label !== ' ' ) {
@@ -172,10 +189,11 @@ export default {
172189 } else {
173190 showSuccess (t (' files_versions' , ' Version restored' ))
174191 }
175- await this . fetchVersions ( )
192+ emit ( ' files_versions:restore:restored ' , version )
176193 } catch (exception) {
177194 this .fileInfo = oldFileInfo
178195 showError (t (' files_versions' , ' Could not restore version' ))
196+ emit (' files_versions:restore:failed' , version)
179197 }
180198 },
181199
0 commit comments