aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing')
-rw-r--r--apps/files_sharing/js/share.js10
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js48
2 files changed, 33 insertions, 25 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 8a63593883b..e833612fb51 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -75,7 +75,9 @@
OCA.Sharing.sharesLoaded = true;
}
else{
- // this will update the icons for all the visible elements
+ // this will update the icons for all the currently visible elements
+ // additionally added elements when scrolling down will be
+ // updated in the _renderRow override
OC.Share.updateIcons('file', fileList);
}
});
@@ -113,11 +115,11 @@
OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename);
}
$('#dropdown').on('sharesChanged', function(ev) {
+ var recipients = _.pluck(ev.shares[OC.Share.SHARE_TYPE_USER], 'share_with_displayname');
+ var groupRecipients = _.pluck(ev.shares[OC.Share.SHARE_TYPE_GROUP], 'share_with_displayname');
+ recipients = recipients.concat(groupRecipients);
// note: we only update the data attribute because updateIcon()
// is called automatically after this event
- var userShares = ev.itemShares[OC.Share.SHARE_TYPE_USER] || [];
- var groupShares = ev.itemShares[OC.Share.SHARE_TYPE_GROUP] || [];
- var recipients = _.union(userShares, groupShares);
if (recipients.length) {
$tr.attr('data-share-recipients', OCA.Sharing.Util.formatRecipients(recipients));
}
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index 1b75ad7a9fd..455addaccc0 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -71,6 +71,7 @@ describe('OCA.Sharing.Util tests', function() {
delete OCA.Sharing.sharesLoaded;
delete OC.Share.droppedDown;
OC.Share.statuses = {};
+ OC.Share.currentShares = {};
});
describe('Sharing data in table row', function() {
@@ -205,6 +206,12 @@ describe('OCA.Sharing.Util tests', function() {
describe('Share action', function() {
var showDropDownStub;
+ function makeDummyShareItem(displayName) {
+ return {
+ share_with_displayname: displayName
+ };
+ }
+
beforeEach(function() {
showDropDownStub = sinon.stub(OC.Share, 'showDropDown', function() {
$('#testArea').append($('<div id="dropdown"></div>'));
@@ -236,11 +243,12 @@ describe('OCA.Sharing.Util tests', function() {
expect(showDropDownStub.calledOnce).toEqual(true);
// simulate what the dropdown does
- var itemShares = {};
- itemShares[OC.Share.SHARE_TYPE_USER] = ['User One', 'User Two'];
- itemShares[OC.Share.SHARE_TYPE_GROUP] = ['Group One', 'Group Two'];
- OC.Share.itemShares = itemShares;
- $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares}));
+ var shares = {};
+ OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user1', 'user2'];
+ OC.Share.itemShares[OC.Share.SHARE_TYPE_GROUP] = ['group1', 'group2'];
+ shares[OC.Share.SHARE_TYPE_USER] = _.map(['User One', 'User Two'], makeDummyShareItem);
+ shares[OC.Share.SHARE_TYPE_GROUP] = _.map(['Group One', 'Group Two'], makeDummyShareItem);
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares}));
expect($tr.attr('data-share-recipients')).toEqual('Group One, Group Two, User One, User Two');
@@ -249,7 +257,7 @@ describe('OCA.Sharing.Util tests', function() {
expect($action.find('>span').text()).toEqual('Shared with Group One, Group Two, User One, User Two');
expect(OC.basename($action.find('img').attr('src'))).toEqual('share.svg');
});
- it('removes share icon after unsharing a shared file', function() {
+ it('updates share icon after updating shares of a file', function() {
var $action, $tr;
OC.Share.statuses = {1: {link: false, path: '/subdir'}};
fileList.setFiles([{
@@ -272,10 +280,10 @@ describe('OCA.Sharing.Util tests', function() {
expect(showDropDownStub.calledOnce).toEqual(true);
// simulate what the dropdown does
- var itemShares = {};
- itemShares[OC.Share.SHARE_TYPE_USER] = ['User One', 'User Two', 'User Three'];
- OC.Share.itemShares = itemShares;
- $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares}));
+ var shares = {};
+ OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user1', 'user2', 'user3'];
+ shares[OC.Share.SHARE_TYPE_USER] = _.map(['User One', 'User Two', 'User Three'], makeDummyShareItem);
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares}));
expect($tr.attr('data-share-recipients')).toEqual('User One, User Three, User Two');
@@ -285,7 +293,7 @@ describe('OCA.Sharing.Util tests', function() {
expect($action.find('>span').text()).toEqual('Shared with User One, User Three, User Two');
expect(OC.basename($action.find('img').attr('src'))).toEqual('share.svg');
});
- it('updates share icon after modifying shares on a shared file', function() {
+ it('removes share icon after removing all shares from a file', function() {
var $action, $tr;
OC.Share.statuses = {1: {link: false, path: '/subdir'}};
fileList.setFiles([{
@@ -309,9 +317,8 @@ describe('OCA.Sharing.Util tests', function() {
expect(showDropDownStub.calledOnce).toEqual(true);
// simulate what the dropdown does
- var itemShares = {};
- OC.Share.itemShares = itemShares;
- $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares}));
+ OC.Share.itemShares = {};
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: {}}));
expect($tr.attr('data-share-recipients')).not.toBeDefined();
@@ -342,10 +349,10 @@ describe('OCA.Sharing.Util tests', function() {
expect(showDropDownStub.calledOnce).toEqual(true);
// simulate what the dropdown does
- var itemShares = {};
- itemShares[OC.Share.SHARE_TYPE_USER] = ['User Two'];
- OC.Share.itemShares = itemShares;
- $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares}));
+ var shares = {};
+ OC.Share.itemShares[OC.Share.SHARE_TYPE_USER] = ['user2'];
+ shares[OC.Share.SHARE_TYPE_USER] = _.map(['User Two'], makeDummyShareItem);
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: shares}));
expect($tr.attr('data-share-recipients')).toEqual('User Two');
@@ -380,9 +387,8 @@ describe('OCA.Sharing.Util tests', function() {
expect(showDropDownStub.calledOnce).toEqual(true);
// simulate what the dropdown does
- var itemShares = {};
- OC.Share.itemShares = itemShares;
- $('#dropdown').trigger(new $.Event('sharesChanged', {itemShares: itemShares}));
+ OC.Share.itemShares = {};
+ $('#dropdown').trigger(new $.Event('sharesChanged', {shares: {}}));
expect($tr.attr('data-share-recipients')).not.toBeDefined();