feat(plugin): support dynamic plugin load / unload

This commit is contained in:
Su-Yong
2023-11-12 01:16:34 +09:00
parent 9c59f56aac
commit 2097f42efb
8 changed files with 87 additions and 15 deletions

View File

@ -8,7 +8,13 @@ import { PluginBaseConfig, PluginBuilder, RendererPluginFactory } from './plugin
import { startingPages } from './providers/extracted-data';
import { setupSongControls } from './providers/song-controls-front';
import setupSongInfo from './providers/song-info-front';
import { getAllLoadedRendererPlugins, loadAllRendererPlugins, registerRendererPlugin } from './loader/renderer';
import {
forceLoadRendererPlugin,
forceUnloadRendererPlugin,
getAllLoadedRendererPlugins,
loadAllRendererPlugins,
registerRendererPlugin
} from './loader/renderer';
let api: Element | null = null;
@ -103,6 +109,13 @@ function onApiLoaded() {
});
await loadAllRendererPlugins();
window.ipcRenderer.on('plugin:unload', (_event, id: keyof PluginBuilderList) => {
forceUnloadRendererPlugin(id);
});
window.ipcRenderer.on('plugin:enable', (_event, id: keyof PluginBuilderList) => {
forceLoadRendererPlugin(id);
});
window.ipcRenderer.on('config-changed', (_event, id: string, newConfig: PluginBaseConfig) => {
const plugin = getAllLoadedRendererPlugins()[id];