Add better handling for unloading of plugins

This commit is contained in:
TrainDoctor
2023-01-29 13:32:58 -08:00
parent c2b76d9099
commit 2e53fb217a
3 changed files with 7 additions and 3 deletions
+1 -1
View File
@@ -108,7 +108,7 @@ class PluginBrowser:
try: try:
logger.info("uninstalling " + name) logger.info("uninstalling " + name)
logger.info(" at dir " + self.find_plugin_folder(name)) logger.info(" at dir " + self.find_plugin_folder(name))
logger.debug("unloading %s" % str(name)) logger.debug("calling frontend unload for %s" % str(name))
await tab.evaluate_js(f"DeckyPluginLoader.unloadPlugin('{name}')") await tab.evaluate_js(f"DeckyPluginLoader.unloadPlugin('{name}')")
if self.plugins[name]: if self.plugins[name]:
self.plugins[name].stop() self.plugins[name].stop()
+5 -1
View File
@@ -92,9 +92,12 @@ class PluginWrapper:
async def _unload(self): async def _unload(self):
try: try:
self.log.info("Attempting to unload " + self.name + "\n") self.log.info("Attempting to unload with plugin " + self.name + "'s \"_unload function/\"" + "\n")
if hasattr(self.Plugin, "_unload"): if hasattr(self.Plugin, "_unload"):
await self.Plugin._unload(self.Plugin) await self.Plugin._unload(self.Plugin)
self.log.info("Unloaded " + self.name + "\n")
else:
self.log.info("Could not find \"_unload\" in " + self.name + "'s main.py" + "\n")
except: except:
self.log.error("Failed to unload " + self.name + "!\n" + format_exc()) self.log.error("Failed to unload " + self.name + "!\n" + format_exc())
exit(0) exit(0)
@@ -118,6 +121,7 @@ class PluginWrapper:
break break
data = loads(line.decode("utf-8")) data = loads(line.decode("utf-8"))
if "stop" in data: if "stop" in data:
self.log.info("Calling Loader unload function.")
await self._unload() await self._unload()
get_event_loop().stop() get_event_loop().stop()
while get_event_loop().is_running(): while get_event_loop().is_running():
+1 -1
View File
@@ -335,7 +335,7 @@ class PluginLoader extends Logger {
fetchNoCors(url: string, request: any = {}) { fetchNoCors(url: string, request: any = {}) {
let args = { method: 'POST', headers: {} }; let args = { method: 'POST', headers: {} };
const req = { ...args, ...request, url, data: request.body }; const req = { ...args, ...request, url, data: request.body };
req?.body && delete req.body req?.body && delete req.body;
return this.callServerMethod('http_request', req); return this.callServerMethod('http_request', req);
}, },
executeInTab(tab: string, runAsync: boolean, code: string) { executeInTab(tab: string, runAsync: boolean, code: string) {