From 7ec83fc9fbb7428bde4cf0e1071704c941ac1f37 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 18 Nov 2015 15:42:35 +0100 Subject: [PATCH] Fix OC.FileInfo to copy all properties This makes it possible to also store custom properties passed through the data object like tags or shareOwner. --- core/js/files/fileinfo.js | 40 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/core/js/files/fileinfo.js b/core/js/files/fileinfo.js index c4a9eeb3d7..3bf68d88b1 100644 --- a/core/js/files/fileinfo.js +++ b/core/js/files/fileinfo.js @@ -19,39 +19,31 @@ * @since 8.2 */ var FileInfo = function(data) { - if (!_.isUndefined(data.id)) { + var self = this; + _.each(data, function(value, key) { + if (!_.isFunction(value)) { + self[key] = value; + } + }); + + if (!_.isUndefined(this.id)) { this.id = parseInt(data.id, 10); } // TODO: normalize path this.path = data.path || ''; - this.name = data.name; - this.mtime = data.mtime; - this.etag = data.etag; - this.permissions = data.permissions; - this.size = data.size; - this.mimetype = data.mimetype || 'application/octet-stream'; - this.mountType = data.mountType; - this.icon = data.icon; - - if (data.type) { - this.type = data.type; - } else if (this.mimetype === 'httpd/unix-directory') { - this.type = 'dir'; + if (this.type === 'dir') { + this.mimetype = 'httpd/unix-directory'; } else { - this.type = 'file'; + this.mimetype = this.mimetype || 'application/octet-stream'; } - if (data.tags) { - this.tags = data.tags; - } - - if (!this.mimetype) { - if (this.type === 'dir') { - this.mimetype = 'httpd/unix-directory'; + if (!this.type) { + if (this.mimetype === 'httpd/unix-directory') { + this.type = 'dir'; } else { - this.mimetype = 'application/octet-stream'; + this.type = 'file'; } } }; @@ -104,7 +96,7 @@ * @type String * @deprecated rely on mimetype instead */ - type: 'file', + type: null, /** * Permissions.