Web:Client:Plugins: refactoring plugin store and helplers
This commit is contained in:
parent
10e20b9f17
commit
7e16507b41
@ -1,7 +1,10 @@
|
||||
import { PluginType } from "./constants";
|
||||
|
||||
class PluginStore {
|
||||
plugins = null;
|
||||
contextMenuItems = null;
|
||||
mainButtonItems = null;
|
||||
profileMenuItems = null;
|
||||
|
||||
constructor() {
|
||||
this.plugins = new Map();
|
||||
@ -11,8 +14,6 @@ class PluginStore {
|
||||
}
|
||||
|
||||
installPlugin(id, plugin) {
|
||||
plugin.init(this);
|
||||
|
||||
this.plugins.set(+id, plugin);
|
||||
|
||||
if (plugin.isActive) {
|
||||
@ -30,12 +31,48 @@ class PluginStore {
|
||||
|
||||
activatePlugin(id) {
|
||||
this.plugins.get(+id).isActive = true;
|
||||
this.plugins.get(+id).activate();
|
||||
const pluginItems = this.plugins.get(+id).activate();
|
||||
|
||||
if (!pluginItems) return;
|
||||
|
||||
Array.from(itemsMap, ([key, value]) => {
|
||||
switch (key) {
|
||||
case PluginType.CONTEXT_MENU:
|
||||
Array.from(value, ([key, item]) =>
|
||||
this.addContextMenuItem(key, item)
|
||||
);
|
||||
return;
|
||||
case PluginType.ACTION_BUTTON:
|
||||
Array.from(value, ([key, item]) => this.addMainButtonItem(key, item));
|
||||
return;
|
||||
case PluginType.PROFILE_MENU:
|
||||
Array.from(value, ([key, item]) =>
|
||||
this.addProfileMenuItem(key, item)
|
||||
);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
deactivatePlugin(id) {
|
||||
this.plugins.get(+id).isActive = false;
|
||||
this.plugins.get(+id).deactivate();
|
||||
const pluginItems = this.plugins.get(+id).deactivate();
|
||||
|
||||
if (!pluginItems) return;
|
||||
|
||||
Array.from(itemsMap, ([key, value]) => {
|
||||
switch (key) {
|
||||
case PluginType.CONTEXT_MENU:
|
||||
value.map((key) => this.deleteContextMenuItem(key));
|
||||
return;
|
||||
case PluginType.ACTION_BUTTON:
|
||||
value.map((key) => this.deleteMainButtonItem(key));
|
||||
return;
|
||||
case PluginType.PROFILE_MENU:
|
||||
value.map((key) => this.deleteProfileMenuItem(key));
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
addContextMenuItem(key, contextMenuItem) {
|
||||
|
@ -6,6 +6,7 @@ import { loadScript } from "@docspace/common/utils";
|
||||
import { PluginContextMenuItemType } from "./constants";
|
||||
|
||||
export const initPluginStore = async () => {
|
||||
window.Plugins = {};
|
||||
window.PluginStore = new PluginStore();
|
||||
|
||||
const plugins = await api.getPlugins();
|
||||
@ -15,7 +16,7 @@ export const initPluginStore = async () => {
|
||||
|
||||
export const initPlugin = (plugin, callback) => {
|
||||
const onLoad = () => {
|
||||
const newPlugin = eval(`${plugin.name}`); //window.DocSpace.plugins[plugin.name]
|
||||
const newPlugin = window?.Plugins[plugin.name];
|
||||
newPlugin.isActive = plugin.isActive;
|
||||
newPlugin.id = plugin.id;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user