From f5be48d81dc4cb2d9e7b1ef340deec2ded042982 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Thu, 11 Feb 2016 08:17:52 +0100 Subject: [PATCH 1/2] Calculate the share statuses in js from the OCS Response Right now this is only done on page load. We should do it on each directory traversal. --- core/js/share.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/js/share.js b/core/js/share.js index 9baa34d9bb..b2c1bd5de1 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -52,15 +52,21 @@ OC.Share = _.extend(OC.Share || {}, { loadIcons:function(itemType, fileList, callback) { // Load all share icons $.get( - OC.filePath('core', 'ajax', 'share.php'), + OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'shares', { - fetch: 'getItemsSharedStatuses', - itemType: itemType + subfiles: 'true', + path: fileList.dirInfo.path, + format: 'json' }, function(result) { - if (result && result.status === 'success') { + if (result && result.ocs.meta.statuscode === 200) { OC.Share.statuses = {}; - $.each(result.data, function(item, data) { - OC.Share.statuses[item] = data; + $.each(result.ocs.data, function(it, share) { + if (!(share.item_source in OC.Share.statuses)) { + OC.Share.statuses[share.item_source] = {link: false}; + } + if (share.share_type === OC.Share.SHARE_TYPE_LINK) { + OC.Share.statuses[share.item_source] = {link: true}; + } }); if (_.isFunction(callback)) { callback(OC.Share.statuses); From a823485638256f30e52c46e92b35b53331a7c321 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Thu, 11 Feb 2016 11:06:26 +0100 Subject: [PATCH 2/2] Reload list of shares on directory change --- apps/files_sharing/js/share.js | 4 ++++ core/js/share.js | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index f8d89828f4..0a01c5af0a 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -122,6 +122,10 @@ } }); + fileList.$el.on('changeDirectory', function() { + OCA.Sharing.sharesLoaded = false; + }); + fileActions.registerAction({ name: 'Share', displayName: '', diff --git a/core/js/share.js b/core/js/share.js index b2c1bd5de1..9539e92e09 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -50,12 +50,18 @@ OC.Share = _.extend(OC.Share || {}, { * @param callback function to call after the shares were loaded */ loadIcons:function(itemType, fileList, callback) { + var path = fileList.dirInfo.path; + if (path === '/') { + path = ''; + } + path += '/' + fileList.dirInfo.name; + // Load all share icons $.get( OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'shares', { subfiles: 'true', - path: fileList.dirInfo.path, + path: path, format: 'json' }, function(result) { if (result && result.ocs.meta.statuscode === 200) {