summaryrefslogtreecommitdiff
path: root/backend/browser.py
diff options
context:
space:
mode:
authorAAGaming <aa@mail.catvibers.me>2022-09-18 14:49:32 -0400
committerAAGaming <aa@mail.catvibers.me>2022-09-18 14:49:32 -0400
commit7716c73014a645d3742c24eaa7c7b1d54e081363 (patch)
tree89120cabfb6b1dca621fa7e319c278a499169acf /backend/browser.py
parent8829adc5b6361cc7ab972ea2f43ab07db206dc93 (diff)
downloaddecky-loader-7716c73014a645d3742c24eaa7c7b1d54e081363.tar.gz
decky-loader-7716c73014a645d3742c24eaa7c7b1d54e081363.zip
fix plugin loading after install, move updater reloads to loader
Diffstat (limited to 'backend/browser.py')
-rw-r--r--backend/browser.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/backend/browser.py b/backend/browser.py
index 83c68d47..79df4625 100644
--- a/backend/browser.py
+++ b/backend/browser.py
@@ -28,9 +28,10 @@ class PluginInstallContext:
self.hash = hash
class PluginBrowser:
- def __init__(self, plugin_path, plugins) -> None:
+ def __init__(self, plugin_path, plugins, loader) -> None:
self.plugin_path = plugin_path
self.plugins = plugins
+ self.loader = loader
self.install_requests = {}
def _unzip_to_plugin_dir(self, zip, name, hash):
@@ -58,6 +59,8 @@ class PluginBrowser:
logger.debug(f"skipping {folder}")
async def uninstall_plugin(self, name):
+ if self.loader.watcher:
+ self.loader.watcher.disabled = True
tab = await get_tab("SP")
try:
logger.info("uninstalling " + name)
@@ -74,8 +77,12 @@ class PluginBrowser:
except Exception as e:
logger.error(f"Plugin {name} in {self.find_plugin_folder(name)} was not uninstalled")
logger.error(f"Error at %s", exc_info=e)
+ if self.loader.watcher:
+ self.loader.watcher.disabled = False
async def _install(self, artifact, name, version, hash):
+ if self.loader.watcher:
+ self.loader.watcher.disabled = True
try:
await self.uninstall_plugin(name)
except:
@@ -93,11 +100,15 @@ class PluginBrowser:
ret = self._unzip_to_plugin_dir(res_zip, name, hash)
if ret:
logger.info(f"Installed {name} (Version: {version})")
- await inject_to_tab("SP", "window.syncDeckyPlugins()")
+ plugin_dir = self.find_plugin_folder(name)
+ self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_dir)
+ # await inject_to_tab("SP", "window.syncDeckyPlugins()")
else:
self.log.fatal(f"SHA-256 Mismatch!!!! {name} (Version: {version})")
else:
logger.fatal(f"Could not fetch from URL. {await res.text()}")
+ if self.loader.watcher:
+ self.loader.watcher.disabled = False
async def request_plugin_install(self, artifact, name, version, hash):
request_id = str(time())