Merge pull request #7624 from nextcloud/fix-fileActions-currentFile-not-set-before-using-it

Fix "fileActions.currentFile" not set before using it
This commit is contained in:
Morris Jobke 2018-01-02 10:28:04 +01:00 committed by GitHub
commit fa2fe34b7a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View file

@ -683,11 +683,14 @@
// the details to be shown. // the details to be shown.
event.preventDefault(); event.preventDefault();
var filename = $tr.attr('data-file'); var filename = $tr.attr('data-file');
this.fileActions.currentFile = $tr.find('td');
var mime = this.fileActions.getCurrentMimeType(); var mime = this.fileActions.getCurrentMimeType();
var type = this.fileActions.getCurrentType(); var type = this.fileActions.getCurrentType();
var permissions = this.fileActions.getCurrentPermissions(); var permissions = this.fileActions.getCurrentPermissions();
var action = this.fileActions.get(mime, type, permissions)['Details']; var action = this.fileActions.get(mime, type, permissions)['Details'];
if (action) { if (action) {
// also set on global object for legacy apps
window.FileActions.currentFile = this.fileActions.currentFile;
action(filename, { action(filename, {
$file: $tr, $file: $tr,
fileList: this, fileList: this,

View file

@ -2489,6 +2489,30 @@ describe('OCA.Files.FileList tests', function() {
expect(context.fileActions).toBeDefined(); expect(context.fileActions).toBeDefined();
expect(context.dir).toEqual('/subdir'); expect(context.dir).toEqual('/subdir');
}); });
it('Clicking on an empty space of the file row will trigger the "Details" action', function() {
var detailsActionStub = sinon.stub();
fileList.setFiles(testFiles);
// Override the "Details" action set internally by the FileList for
// easier testing.
fileList.fileActions.registerAction({
mime: 'all',
name: 'Details',
permissions: OC.PERMISSION_NONE,
actionHandler: detailsActionStub
});
// Ensure that the action works even if fileActions.currentFile is
// not set.
fileList.fileActions.currentFile = null;
var $tr = fileList.findFileEl('One.txt');
$tr.find('td.filename a.name').click();
expect(detailsActionStub.calledOnce).toEqual(true);
expect(detailsActionStub.getCall(0).args[0]).toEqual('One.txt');
var context = detailsActionStub.getCall(0).args[1];
expect(context.$file.is($tr)).toEqual(true);
expect(context.fileList).toBe(fileList);
expect(context.fileActions).toBe(fileList.fileActions);
expect(context.dir).toEqual('/subdir');
});
it('redisplays actions when new actions have been registered', function() { it('redisplays actions when new actions have been registered', function() {
var actionStub = sinon.stub(); var actionStub = sinon.stub();
var readyHandler = sinon.stub(); var readyHandler = sinon.stub();