This commit is contained in:
layyback 2024-07-18 17:40:03 +08:00
parent 2053491782
commit ef34452a4f
2 changed files with 15 additions and 18 deletions

View File

@ -175,22 +175,21 @@ export default () => {
const removeView = (window: BrowserWindow) => { const removeView = (window: BrowserWindow) => {
if (!view) return; if (!view) return;
executeHooks('PluginOut', null);
setTimeout(() => {
window.removeBrowserView(view); window.removeBrowserView(view);
if (!view.inDetach) { if (!view.inDetach) {
window.setBrowserView(null); window.setBrowserView(null);
view.webContents?.destroy(); view.webContents?.destroy();
} }
// window.setSize(800, 60);
executeHooks('PluginOut', null);
window.webContents?.executeJavaScript(`window.initRubick()`); window.webContents?.executeJavaScript(`window.initRubick()`);
view = undefined; view = undefined;
}, 0);
}; };
const getView = () => view; const getView = () => view;
const executeHooks = (hook, data) => { const executeHooks = (hook, data) => {
setTimeout(() => {
if (!view) return; if (!view) return;
const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) { const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) {
try { try {
@ -199,7 +198,6 @@ export default () => {
} }
`; `;
view.webContents?.executeJavaScript(evalJs); view.webContents?.executeJavaScript(evalJs);
}, 300);
}; };
return { return {

View File

@ -128,8 +128,8 @@ class API extends DBInstance {
} }
public removePlugin(e, window) { public removePlugin(e, window) {
this.currentPlugin = null;
runnerInstance.removeView(window); runnerInstance.removeView(window);
this.currentPlugin = null;
} }
public openPluginDevTools() { public openPluginDevTools() {
@ -211,11 +211,10 @@ class API extends DBInstance {
if (!Notification.isSupported()) return; if (!Notification.isSupported()) return;
'string' != typeof body && (body = String(body)); 'string' != typeof body && (body = String(body));
const plugin = this.currentPlugin; const plugin = this.currentPlugin;
if (!plugin) return;
const notify = new Notification({ const notify = new Notification({
title: plugin.pluginName, title: plugin ? plugin.pluginName : null,
body, body,
icon: plugin.logo, icon: plugin ? plugin.logo : null,
}); });
notify.show(); notify.show();
} }