summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files/js/filelist.js17
-rw-r--r--apps/files/tests/js/filelistSpec.js30
2 files changed, 40 insertions, 7 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 672c39a8bb1..7e1329d1155 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -990,13 +990,16 @@
}
if (fileData.mountType) {
- // FIXME: HACK: detect shared-root
- if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared') {
- // if parent folder isn't share, assume the displayed folder is a share root
- fileData.mountType = 'shared-root';
- } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external') {
- // if parent folder isn't external, assume the displayed folder is the external storage root
- fileData.mountType = 'external-root';
+ // dirInfo (parent) only exist for the "real" file list
+ if (this.dirInfo.id) {
+ // FIXME: HACK: detect shared-root
+ if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared' && this.dirInfo.mountType !== 'shared-root') {
+ // if parent folder isn't share, assume the displayed folder is a share root
+ fileData.mountType = 'shared-root';
+ } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external' && this.dirInfo.mountType !== 'external-root') {
+ // if parent folder isn't external, assume the displayed folder is the external storage root
+ fileData.mountType = 'external-root';
+ }
}
tr.attr('data-mounttype', fileData.mountType);
}
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 9f7ad50bc60..3542a5cee8f 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -2534,4 +2534,34 @@ describe('OCA.Files.FileList tests', function() {
expect(newFileMenuStub.notCalled).toEqual(true);
});
});
+ describe('mount type detection', function() {
+ function testMountType(dirInfoId, dirInfoMountType, inputMountType, expectedMountType) {
+ var $tr;
+ fileList.dirInfo.id = dirInfoId;
+ fileList.dirInfo.mountType = dirInfoMountType;
+ $tr = fileList.add({
+ type: 'dir',
+ mimetype: 'httpd/unix-directory',
+ name: 'test dir',
+ mountType: inputMountType
+ });
+
+ expect($tr.attr('data-mounttype')).toEqual(expectedMountType);
+ }
+
+ it('leaves mount type as is if no parent exists', function() {
+ testMountType(null, null, 'external', 'external');
+ testMountType(null, null, 'shared', 'shared');
+ });
+ it('detects share root if parent exists', function() {
+ testMountType(123, null, 'shared', 'shared-root');
+ testMountType(123, 'shared', 'shared', 'shared');
+ testMountType(123, 'shared-root', 'shared', 'shared');
+ });
+ it('detects external storage root if parent exists', function() {
+ testMountType(123, null, 'external', 'external-root');
+ testMountType(123, 'external', 'external', 'external');
+ testMountType(123, 'external-root', 'external', 'external');
+ });
+ });
});