diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-06-27 13:36:18 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-06-27 13:41:01 +0200 |
commit | 586b3a9683421181b7cd66aff2d3fabd0f34531e (patch) | |
tree | 387b4488859d0173f164d5f94d9b5b58ea1f8a05 /apps/files/js/filelist.js | |
parent | 4d6019b73fd8b1a1d8e8fecbeb129bea12feb89d (diff) | |
download | nextcloud-server-586b3a9683421181b7cd66aff2d3fabd0f34531e.tar.gz nextcloud-server-586b3a9683421181b7cd66aff2d3fabd0f34531e.zip |
Sync file list with file actions
Whenever file actions are registered later, now the file lists are
automatically notified.
Added FileActions.addUpdateListener() to be able to receive such
notifications.
This removes the need for apps to manually call FileActions.display()
after registering new actions.
This fixes issues with race conditions when file actions are
registered after the file list was already rendered.
Diffstat (limited to 'apps/files/js/filelist.js')
-rw-r--r-- | apps/files/js/filelist.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 55afedb2065..82aa29670df 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -168,12 +168,22 @@ this.$container.on('scroll', _.bind(this._onScroll, this)); }, + /** + * Destroy / uninitialize this instance. + */ + destroy: function() { + // TODO: also unregister other event handlers + this.fileActions.removeUpdateListener(this._onFileActionsUpdated); + }, + _initFileActions: function(fileActions) { this.fileActions = fileActions; if (!this.fileActions) { this.fileActions = new OCA.Files.FileActions(); this.fileActions.registerDefaultActions(); } + this._onFileActionsUpdated = _.debounce(_.bind(this._onFileActionsUpdated, this), 100); + this.fileActions.addUpdateListener(this._onFileActionsUpdated); }, /** @@ -488,6 +498,18 @@ }, /** + * Event handler for when file actions were updated. + * This will refresh the file actions on the list. + */ + _onFileActionsUpdated: function() { + console.log('onFileActionsUpdated'); + var self = this; + this.$fileList.find('tr td.filename').each(function() { + self.fileActions.display($(this), true, self); + }); + }, + + /** * Sets the files to be displayed in the list. * This operation will re-render the list and update the summary. * @param filesArray array of file data (map) |