From 7ec83fc9fbb7428bde4cf0e1071704c941ac1f37 Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
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 | 42 ++++++++++++++++-----------------------
 1 file changed, 17 insertions(+), 25 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';
-		} else {
-			this.type = 'file';
-		}
 
-		if (data.tags) {
-			this.tags = data.tags;
+		if (this.type === 'dir') {
+			this.mimetype = 'httpd/unix-directory';
+		} else {
+			this.mimetype = this.mimetype || 'application/octet-stream';
 		}
 
-		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.
-- 
GitLab