diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 3f1cdada2b95..1001f99600c1 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -549,6 +549,11 @@ */ _onUrlChanged: function(e) { if (e && _.isString(e.dir)) { + var currentDir = this.getCurrentDirectory(); + // this._currentDirectory is NULL when fileList is first initialised + if( (this._currentDirectory || this.$el.find('#dir').val()) && currentDir === e.dir) { + return; + } this.changeDirectory(e.dir, false, true); } }, diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 35aa28be83aa..85121c3dcd34 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -2991,4 +2991,22 @@ describe('OCA.Files.FileList tests', function() { testMountType(123, 'external-root', 'external', 'external'); }); }); + describe('file list should not refresh if url does not change', function() { + var fileListStub; + + beforeEach(function() { + fileListStub = sinon.stub(OCA.Files.FileList.prototype, 'changeDirectory'); + }); + afterEach(function() { + fileListStub.restore(); + }); + it('File list must not be refreshed', function() { + $('#app-content-files').trigger(new $.Event('urlChanged', {dir: '/subdir'})); + expect(fileListStub.notCalled).toEqual(true); + }); + it('File list must be refreshed', function() { + $('#app-content-files').trigger(new $.Event('urlChanged', {dir: '/'})); + expect(fileListStub.notCalled).toEqual(false); + }); + }); });