From 3bfe1d2d28f9b2f11e5ced835c23c4062a5d1cb4 Mon Sep 17 00:00:00 2001 From: f321x Date: Tue, 29 Apr 2025 13:08:20 +0200 Subject: [PATCH] handle loading plugins with same name as installed plugin (update) --- electrum/gui/qt/plugins_dialog.py | 4 ++++ electrum/plugin.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/electrum/gui/qt/plugins_dialog.py b/electrum/gui/qt/plugins_dialog.py index 7b1e3a52f..ffaac4a19 100644 --- a/electrum/gui/qt/plugins_dialog.py +++ b/electrum/gui/qt/plugins_dialog.py @@ -67,6 +67,10 @@ class PluginDialog(WindowModalDialog): install_button = QPushButton(_('Install...')) install_button.clicked.connect(self.accept) buttons.insert(0, install_button) + elif self.plugins.get_metadata(name).get('zip_hash_sha256') != zip_hash: + update_button = QPushButton(_('Update...')) + update_button.clicked.connect(self.accept) + buttons.insert(0, update_button) else: remove_button = QPushButton(_('Uninstall')) remove_button.clicked.connect(self.do_remove) diff --git a/electrum/plugin.py b/electrum/plugin.py index c2e5cd7dd..215e285c2 100644 --- a/electrum/plugin.py +++ b/electrum/plugin.py @@ -401,6 +401,8 @@ class Plugins(DaemonThread): self.config.set_key(f'plugins.{name}.enabled', []) def install_external_plugin(self, name, path, privkey, manifest): + # uninstall old version first to get rid of old zip files when updating plugin + self.uninstall(name) self.external_plugin_metadata[name] = manifest self.authorize_plugin(name, path, privkey)