diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index 8ea0bf28b388a7c2cd922909852c1dc6fa38c157..00c1212fa79c4d8d1ba1fac8933129b1a9345b76 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -598,6 +598,33 @@
 			}
 		},
 
+		/**
+		 * Group reshares into a single super share element.
+		 * Does this by finding the most precise share and
+		 * combines the permissions to be the most permissive.
+		 *
+		 * @param {Array} reshares
+		 * @return {Object} reshare
+		 */
+		_groupReshares: function(reshares) {
+			if (!reshares || !reshares.length) {
+				return false;
+			}
+
+			var superShare = reshares.shift();
+			var combinedPermissions = superShare.permissions;
+			_.each(reshares, function(reshare) {
+				// use share have higher priority than group share
+				if (reshare.share_type === OC.Share.SHARE_TYPE_USER && superShare.share_type === OC.Share.SHARE_TYPE_GROUP) {
+					superShare = reshare;
+				}
+				combinedPermissions |= reshare.permissions;
+			});
+
+			superShare.permissions = combinedPermissions;
+			return superShare;
+		},
+
 		fetch: function() {
 			var model = this;
 			this.trigger('request', this);
@@ -615,7 +642,7 @@
 
 				var reshare = false;
 				if (data2[0].ocs.data.length) {
-					reshare = data2[0].ocs.data[0];
+					reshare = model._groupReshares(data2[0].ocs.data);
 				}
 
 				model.set(model.parse({
diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js
index 8c9560d2646d64535228dc7e145563a5f5cf7162..9d9001dc9e8f630a10929b5628aba01fb047d8b5 100644
--- a/core/js/tests/specs/shareitemmodelSpec.js
+++ b/core/js/tests/specs/shareitemmodelSpec.js
@@ -181,6 +181,48 @@ describe('OC.Share.ShareItemModel', function() {
 
 			// TODO: check more attributes
 		});
+		it('groups reshare info into a single item', function() {
+			/* jshint camelcase: false */
+			fetchReshareDeferred.resolve(makeOcsResponse([
+				{
+					id: '1',
+					share_type: OC.Share.SHARE_TYPE_USER,
+					uid_owner: 'owner',
+					displayname_owner: 'Owner',
+					share_with: 'root',
+					permissions: 1
+				},
+				{
+					id: '2',
+					share_type: OC.Share.SHARE_TYPE_GROUP,
+					uid_owner: 'owner',
+					displayname_owner: 'Owner',
+					share_with: 'group1',
+					permissions: 15
+				},
+				{
+					id: '3',
+					share_type: OC.Share.SHARE_TYPE_GROUP,
+					uid_owner: 'owner',
+					displayname_owner: 'Owner',
+					share_with: 'group1',
+					permissions: 17
+				}
+			]));
+			fetchSharesDeferred.resolve(makeOcsResponse([]));
+
+			OC.currentUser = 'root';
+
+			model.fetch();
+
+			var reshare = model.get('reshare');
+			// max permissions
+			expect(reshare.permissions).toEqual(31);
+			// user share has higher priority
+			expect(reshare.share_type).toEqual(OC.Share.SHARE_TYPE_USER);
+			expect(reshare.share_with).toEqual('root');
+			expect(reshare.id).toEqual('1');
+		});
 		it('does not parse link share when for a different file', function() {
 			/* jshint camelcase: false */
 			fetchReshareDeferred.resolve(makeOcsResponse([]));