Web:Client:Plugin: fix context menu items for Images, Video, Files for file list and viewer

This commit is contained in:
Timofey Boyko 2023-08-15 15:14:32 +03:00
parent fbe6fc28a4
commit 84a6a8db9d
4 changed files with 64 additions and 35 deletions

View File

@ -253,17 +253,17 @@ export default inject(
setIsSectionFilterLoading(param);
};
const { contextMenuItemsList } = pluginStore;
const { contextMenuItemsList, getContextMenuKeysByType } = pluginStore;
const pluginContextMenuKeys = [
...(getContextMenuKeysByType() || []),
...(getContextMenuKeysByType(PluginFileType.Image) || []),
...(getContextMenuKeysByType(PluginFileType.Video) || []),
];
const pluginContextMenuItems =
contextMenuItemsList?.filter((i) => {
const { value } = i;
if (
value?.fileType?.includes(PluginFileType.Image) ||
value?.fileType.includes(PluginFileType.Video) ||
!value?.fileType
) {
if (pluginContextMenuKeys.includes(i.key)) {
return true;
}

View File

@ -1949,40 +1949,55 @@ class FilesStore {
// ]);
// }
if (!isRecycleBinFolder)
if (!isRecycleBinFolder) {
fileOptions = this.removeOptions(fileOptions, ["restore"]);
if (enablePlugins && !isRecycleBinFolder) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Files,
item.fileExst
);
if (enablePlugins) {
if (
!item.viewAccessability.MediaView &&
!item.viewAccessability.ImageView
) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Files,
item.fileExst
);
pluginAllKeys && pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
}
pluginAllKeys &&
pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
}
if (enablePlugins && item.viewAccessability.ImageView) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Image,
item.fileExst
);
if (
!item.viewAccessability.MediaView &&
item.viewAccessability.ImageView
) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Image,
item.fileExst
);
pluginAllKeys && pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
}
pluginAllKeys &&
pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
}
if (enablePlugins && item.viewAccessability.MediaView) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Video,
item.fileExst
);
if (
item.viewAccessability.MediaView &&
!item.viewAccessability.ImageView
) {
const pluginFilesKeys = this.pluginStore.getContextMenuKeysByType(
PluginFileType.Video,
item.fileExst
);
pluginAllKeys && pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
pluginAllKeys &&
pluginAllKeys.forEach((key) => fileOptions.push(key));
pluginFilesKeys &&
pluginFilesKeys.forEach((key) => fileOptions.push(key));
}
}
}
if (!this.canShareOwnerChange(item)) {

View File

@ -36,6 +36,7 @@ export interface MediaViewerProps {
label: string;
onClick: (id: number) => void;
icon: string;
fileType?: ["video", "image"];
};
}[];

View File

@ -201,6 +201,19 @@ function MediaViewer({
props.onClose();
};
if (
item.value.fileType &&
item.value.fileType.includes("image") &&
!targetFile.viewAccessability.ImageView
)
return;
if (
item.value.fileType &&
item.value.fileType.includes("video") &&
!targetFile.viewAccessability.MediaView
)
return;
model.push({
id: item.key,
key: item.key,