fix: add plugin to config via function instead of signal
Some checks failed
/ cargo-fmtcheck (push) Has been cancelled
/ cargo-clippy (push) Has been cancelled
/ cargo-test (push) Has been cancelled
/ appimage (push) Has been cancelled

This commit is contained in:
Gabriele Musco 2025-01-26 11:41:43 +01:00
parent 9bdda7d63d
commit 3680e305a9
No known key found for this signature in database
GPG key ID: 1068D795C80E51DE

View file

@ -56,7 +56,6 @@ pub enum PluginStoreMsg {
ShowDetails(usize),
ShowPluginList,
PresentAddCustomPluginWin,
AddPluginToConfig(Plugin),
AddCustomPlugin(Plugin),
}
@ -88,6 +87,16 @@ impl PluginStore {
});
});
}
fn add_plugin_to_config(&mut self, sender: &relm4::AsyncComponentSender<Self>, plugin: Plugin) {
self.config_plugins
.insert(plugin.appid.clone(), PluginConfig::from(&plugin));
sender
.output(PluginStoreOutMsg::UpdateConfigPlugins(
self.config_plugins.clone(),
))
.expect(SENDER_IO_ERR_MSG);
}
}
#[relm4::component(pub async)]
@ -226,18 +235,9 @@ impl AsyncComponent for PluginStore {
);
return;
}
sender.input(Self::Input::AddPluginToConfig(plugin));
self.add_plugin_to_config(&sender, plugin);
sender.input(Self::Input::Refresh);
}
Self::Input::AddPluginToConfig(plugin) => {
self.config_plugins
.insert(plugin.appid.clone(), PluginConfig::from(&plugin));
sender
.output(Self::Output::UpdateConfigPlugins(
self.config_plugins.clone(),
))
.expect(SENDER_IO_ERR_MSG);
}
Self::Input::PresentAddCustomPluginWin => {
let add_win = AddCustomPluginWin::builder()
.launch(AddCustomPluginWinInit {
@ -351,19 +351,19 @@ impl AsyncComponent for PluginStore {
);
return;
}
sender.input(Self::Input::AddPluginToConfig(plugin.clone()));
self.add_plugin_to_config(&sender, plugin.clone());
}
}
None => {
alert(
"Download failed",
Some(&format!(
"Downloading {} {} failed:\n\nNo executable url provided for this plugin, this is likely a bug!",
plugin.name,
plugin.version.as_ref().unwrap_or(&"(no version)".to_string()))
),
Some(&self.win.as_ref().unwrap().clone().upcast::<gtk::Window>())
);
"Download failed",
Some(&format!(
"Downloading {} {} failed:\n\nNo executable url provided for this plugin, this is likely a bug!",
plugin.name,
plugin.version.as_ref().unwrap_or(&"(no version)".to_string()))
),
Some(&self.win.as_ref().unwrap().clone().upcast::<gtk::Window>())
);
}
};
self.refresh_plugin_rows();