99 */
1010
1111import 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