Reload file list when leaving hidden state

Whenever a file list is already initialized and was hidden when
switching to another file list in the navigation bar, if the user comes
back to this list it gets redisplayed. At this point the list needs to
be refreshed to be able to reflect any potential file changes done from
the other lists.
pull/4519/head
Vincent Petry 8 years ago committed by Joas Schilling
parent 5b5c3a1773
commit 3f36548a6d
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
  1. 8
      apps/files/js/filelist.js
  2. 6
      apps/files/tests/js/filelistSpec.js

@ -327,6 +327,7 @@
this.$fileList.on('click','td.filename>a.name, td.filesize, td.date', _.bind(this._onClickFile, this));
this.$fileList.on('change', 'td.filename>.selectCheckBox', _.bind(this._onClickFileCheckbox, this));
this.$el.on('show', _.bind(this._onShow, this));
this.$el.on('urlChanged', _.bind(this._onUrlChanged, this));
this.$el.find('.select-all').click(_.bind(this._onClickSelectAll, this));
this.$el.find('.download').click(_.bind(this._onClickDownloadSelected, this));
@ -552,6 +553,13 @@
this.$table.find('>thead').width($('#app-content').width() - OC.Util.getScrollBarWidth());
},
/**
* Event handler when leaving previously hidden state
*/
_onShow: function(e) {
this.reload();
},
/**
* Event handler for when the URL changed
*/

@ -1507,6 +1507,12 @@ describe('OCA.Files.FileList tests', function() {
$('#app-content-files').trigger(new $.Event('urlChanged', {view: 'files', dir: '/somedir'}));
expect(fileList.getCurrentDirectory()).toEqual('/somedir');
});
it('reloads the list when leaving hidden state', function() {
var reloadStub = sinon.stub(fileList, 'reload');
$('#app-content-files').trigger(new $.Event('show'));
expect(reloadStub.calledOnce).toEqual(true);
reloadStub.restore();
});
it('refreshes breadcrumb after update', function() {
var setDirSpy = sinon.spy(fileList.breadcrumb, 'setDirectory');
fileList.changeDirectory('/anothersubdir');

Loading…
Cancel
Save