Skip to content

Commit 446ae93

Browse files
committed
Emit events on files_versions frontend actions to allow apps to hook into them
Signed-off-by: Julius Härtl <[email protected]>
1 parent 615721d commit 446ae93

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

apps/files_versions/src/versionstabview.js

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
*/
1010

1111
import ItemTemplate from './templates/item.handlebars'
12-
import Template from './templates/template.handlebars';
12+
import Template from './templates/template.handlebars'
13+
import { emit } from '@nextcloud/event-bus'
1314

1415
(function() {
1516
/**
@@ -25,6 +26,7 @@ import Template from './templates/template.handlebars';
2526

2627
events: {
2728
'click .revertVersion': '_onClickRevertVersion',
29+
'click .downloadVersion': '_onClickDownloadVersion',
2830
},
2931

3032
initialize() {
@@ -68,6 +70,15 @@ import Template from './templates/template.handlebars';
6870
const revision = $target.attr('data-revision')
6971

7072
const versionModel = this.collection.get(revision)
73+
const restoreStartedEventState = {
74+
preventDefault: false,
75+
fileInfoModel,
76+
versionModel,
77+
}
78+
emit('files_versions:restore:started', restoreStartedEventState)
79+
if (restoreStartedEventState.preventDefault) {
80+
return
81+
}
7182
versionModel.revert({
7283
success() {
7384
// reset and re-fetch the updated collection
@@ -86,6 +97,10 @@ import Template from './templates/template.handlebars';
8697
// temp dummy, until we can do a PROPFIND
8798
etag: versionModel.get('id') + versionModel.get('timestamp'),
8899
})
100+
emit('files_versions:restore:finished', {
101+
fileInfoModel,
102+
versionModel,
103+
})
89104
},
90105

91106
error() {
@@ -101,6 +116,10 @@ import Template from './templates/template.handlebars';
101116
type: 'error',
102117
}
103118
)
119+
emit('files_versions:restore:failed', {
120+
fileInfoModel,
121+
versionModel,
122+
})
104123
},
105124
})
106125

@@ -109,6 +128,26 @@ import Template from './templates/template.handlebars';
109128
fileInfoModel.trigger('busy', fileInfoModel, true)
110129
},
111130

131+
_onClickDownloadVersion(e) {
132+
let $target = $(ev.target)
133+
const fileInfoModel = this.collection.getFileInfo()
134+
if (!$target.is('li')) {
135+
$target = $target.closest('li')
136+
}
137+
const revision = $target.attr('data-revision')
138+
const versionModel = this.collection.get(revision)
139+
140+
const downloadVersionEventState = {
141+
preventDefault: false,
142+
fileInfoModel,
143+
versionModel,
144+
}
145+
emit('files_versions:download:triggered', downloadVersionEventState)
146+
if (downloadVersionEventState.preventDefault) {
147+
e.preventDefault()
148+
}
149+
},
150+
112151
_toggleLoading(state) {
113152
this._loading = state
114153
this.$el.find('.loading').toggleClass('hidden', !state)

0 commit comments

Comments
 (0)