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:
logger.info("uninstalling " + 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}')")
if self.plugins[name]:
self.plugins[name].stop()
+5 -1
View File
@@ -92,9 +92,12 @@ class PluginWrapper:
async def _unload(self):
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"):
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:
self.log.error("Failed to unload " + self.name + "!\n" + format_exc())
exit(0)
@@ -118,6 +121,7 @@ class PluginWrapper:
break
data = loads(line.decode("utf-8"))
if "stop" in data:
self.log.info("Calling Loader unload function.")
await self._unload()
get_event_loop().stop()
while get_event_loop().is_running():
+1 -1
View File
@@ -335,7 +335,7 @@ class PluginLoader extends Logger {
fetchNoCors(url: string, request: any = {}) {
let args = { method: 'POST', headers: {} };
const req = { ...args, ...request, url, data: request.body };
req?.body && delete req.body
req?.body && delete req.body;
return this.callServerMethod('http_request', req);
},
executeInTab(tab: string, runAsync: boolean, code: string) {