summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorTravis Lane <63308171+Tormak9970@users.noreply.github.com>2023-04-03 17:21:31 -0400
committerGitHub <noreply@github.com>2023-04-03 14:21:31 -0700
commit0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796 (patch)
treee3018e7096401d387923f388637c5a45f6fa6185 /backend
parentfd325ef1cc1d3e78b5e7686819e05606cc79d963 (diff)
downloaddecky-loader-0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796.tar.gz
decky-loader-0f36e87ccea0d9bf2a3db8ee858f27d9d1b2d796.zip
Add plugin reordering (#378)
* feat: started work on saving plugin order * feat: implemented local ReorderableList * feat: reoder complete except for usage of DFL * switched to using dfl reorderableList * fix: added missing file and removed frag * updated to newest dfl * Update defsettings.json * fix: plugin order was missing on init * fix: now await pluginOrder * fix: moved the plugin-order load to plugin-loader * chore: v6 and dfl bump
Diffstat (limited to 'backend')
-rw-r--r--backend/browser.py12
-rw-r--r--backend/main.py5
2 files changed, 15 insertions, 2 deletions
diff --git a/backend/browser.py b/backend/browser.py
index 97fa3f11..12ca6644 100644
--- a/backend/browser.py
+++ b/backend/browser.py
@@ -30,10 +30,11 @@ class PluginInstallContext:
self.hash = hash
class PluginBrowser:
- def __init__(self, plugin_path, plugins, loader) -> None:
+ def __init__(self, plugin_path, plugins, loader, settings) -> None:
self.plugin_path = plugin_path
self.plugins = plugins
self.loader = loader
+ self.settings = settings
self.install_requests = {}
def _unzip_to_plugin_dir(self, zip, name, hash):
@@ -123,6 +124,10 @@ class PluginBrowser:
logger.debug("Plugin %s was stopped", name)
del self.plugins[name]
logger.debug("Plugin %s was removed from the dictionary", name)
+ current_plugin_order = self.settings.getSetting("pluginOrder")
+ current_plugin_order.remove(name)
+ self.settings.setSetting("pluginOrder", current_plugin_order)
+ logger.debug("Plugin %s was removed from the pluginOrder setting", name)
logger.debug("removing files %s" % str(name))
rmtree(plugin_dir)
except FileNotFoundError:
@@ -170,6 +175,11 @@ class PluginBrowser:
self.loader.plugins[name].stop()
self.loader.plugins.pop(name, None)
await sleep(1)
+
+ current_plugin_order = self.settings.getSetting("pluginOrder")
+ current_plugin_order.append(name)
+ self.settings.setSetting("pluginOrder", current_plugin_order)
+ logger.debug("Plugin %s was added to the pluginOrder setting", name)
self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_folder)
else:
logger.fatal(f"Failed Downloading Remote Binaries")
diff --git a/backend/main.py b/backend/main.py
index de06e633..2c3ead79 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -71,8 +71,8 @@ class PluginManager:
)
})
self.plugin_loader = Loader(self.web_app, CONFIG["plugin_path"], self.loop, CONFIG["live_reload"])
- self.plugin_browser = PluginBrowser(CONFIG["plugin_path"], self.plugin_loader.plugins, self.plugin_loader)
self.settings = SettingsManager("loader", path.join(HOMEBREW_PATH, "settings"))
+ self.plugin_browser = PluginBrowser(CONFIG["plugin_path"], self.plugin_loader.plugins, self.plugin_loader, self.settings)
self.utilities = Utilities(self)
self.updater = Updater(self)
@@ -109,6 +109,9 @@ class PluginManager:
logger.debug("Loading plugins")
self.plugin_loader.import_plugins()
# await inject_to_tab("SP", "window.syncDeckyPlugins();")
+ if self.settings.getSetting("pluginOrder", None) == None:
+ self.settings.setSetting("pluginOrder", list(self.plugin_loader.plugins.keys()))
+ logger.debug("Did not find pluginOrder setting, set it to default")
async def loader_reinjector(self):
while True: