Skip to content

Commit 79ad5bf

Browse files
Hossein Moradi Davijaniandersevenrud
authored andcommitted
Added support for middleware in edit menu
1 parent e12c53d commit 79ad5bf

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

index.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -470,13 +470,30 @@ const menuFactory = (core, proc, win) => {
470470
const __ = translatable(translations);
471471
const getMountpoints = () => fs.mountpoints(true);
472472

473+
const menuItemsFromMiddleware = async (type, middlewareArgs) => {
474+
if (!core.has('osjs/middleware')) {
475+
return [];
476+
}
477+
478+
const items = core.make('osjs/middleware')
479+
.get(`osjs/filemanager:menu:${type}`);
480+
481+
const promises = items.map(fn => fn(middlewareArgs));
482+
483+
const resolved = await Promise.all(promises);
484+
const result = resolved
485+
.filter(items => items instanceof Array);
486+
487+
return [].concat(...result);
488+
};
489+
473490
const createFileMenu = () => ([
474491
{label: _('LBL_UPLOAD'), onclick: () => win.emit('filemanager:menu:upload')},
475492
{label: _('LBL_MKDIR'), onclick: () => win.emit('filemanager:menu:mkdir')},
476493
{label: _('LBL_QUIT'), onclick: () => win.emit('filemanager:menu:quit')}
477494
]);
478495

479-
const createEditMenu = (item, isContextMenu) => {
496+
const createEditMenu = async (item, isContextMenu) => {
480497
const emitter = name => win.emit(name, item);
481498

482499
if (item && isSpecialFile(item.filename)) {
@@ -521,6 +538,8 @@ const menuFactory = (core, proc, win) => {
521538
});
522539
}
523540

541+
const appendItems = await menuItemsFromMiddleware('edit', {file: item, isContextMenu});
542+
524543
return [
525544
...openMenu,
526545
{
@@ -538,7 +557,8 @@ const menuFactory = (core, proc, win) => {
538557
label: _('LBL_DOWNLOAD'),
539558
disabled: !item || isDirectory || !isValidFile,
540559
onclick: () => emitter('filemanager:menu:download')
541-
}
560+
},
561+
...appendItems
542562
];
543563
};
544564

@@ -562,10 +582,10 @@ const menuFactory = (core, proc, win) => {
562582
go: createGoMenu
563583
};
564584

565-
return ({name, ev}, args, isContextMenu = false) => {
585+
return async ({name, ev}, args, isContextMenu = false) => {
566586
if (menuItems[name]) {
567587
contextmenu.show({
568-
menu: menuItems[name](args, isContextMenu),
588+
menu: await menuItems[name](args, isContextMenu),
569589
position: isContextMenu ? ev : ev.target
570590
});
571591
} else {

0 commit comments

Comments
 (0)