From 6d8c9e437f6cc36d479f4be33779834b2180507d Mon Sep 17 00:00:00 2001 From: edouard Date: Thu, 31 Aug 2023 09:45:47 +0200 Subject: [PATCH] gui: forbid edit bitcoind client config if internal --- gui/src/app/mod.rs | 9 ++++++--- gui/src/app/state/settings/bitcoind.rs | 12 ++++++++++-- gui/src/app/state/settings/mod.rs | 5 ++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gui/src/app/mod.rs b/gui/src/app/mod.rs index dc449008..25c9c86d 100644 --- a/gui/src/app/mod.rs +++ b/gui/src/app/mod.rs @@ -72,9 +72,12 @@ impl App { fn load_state(&mut self, menu: &Menu) -> Command { self.state = match menu { - menu::Menu::Settings => { - state::SettingsState::new(self.data_dir.clone(), self.wallet.clone()).into() - } + menu::Menu::Settings => state::SettingsState::new( + self.data_dir.clone(), + self.wallet.clone(), + self.internal_bitcoind.is_some(), + ) + .into(), menu::Menu::Home => Home::new(self.wallet.clone(), &self.cache.coins).into(), menu::Menu::Coins => CoinsPanel::new( &self.cache.coins, diff --git a/gui/src/app/state/settings/bitcoind.rs b/gui/src/app/state/settings/bitcoind.rs index b5c098cf..6b3b529a 100644 --- a/gui/src/app/state/settings/bitcoind.rs +++ b/gui/src/app/state/settings/bitcoind.rs @@ -22,13 +22,19 @@ pub struct BitcoindSettingsState { warning: Option, config_updated: bool, daemon_is_external: bool, + bitcoind_is_internal: bool, settings: Vec>, current: Option, } impl BitcoindSettingsState { - pub fn new(config: Option, cache: &Cache, daemon_is_external: bool) -> Self { + pub fn new( + config: Option, + cache: &Cache, + daemon_is_external: bool, + bitcoind_is_internal: bool, + ) -> Self { let settings = if let Some(config) = &config { vec![ BitcoindSettings::new( @@ -44,6 +50,7 @@ impl BitcoindSettingsState { BitcoindSettingsState { daemon_is_external, + bitcoind_is_internal, warning: None, config_updated: false, settings, @@ -106,7 +113,8 @@ impl State for BitcoindSettingsState { } fn view<'a>(&'a self, cache: &'a Cache) -> Element<'a, view::Message> { - let can_edit = self.current.is_none() && !self.daemon_is_external; + let can_edit = + self.current.is_none() && !self.daemon_is_external && !self.bitcoind_is_internal; view::settings::bitcoind_settings( cache, self.warning.as_ref(), diff --git a/gui/src/app/state/settings/mod.rs b/gui/src/app/state/settings/mod.rs index 471a7e00..fdce1ca3 100644 --- a/gui/src/app/state/settings/mod.rs +++ b/gui/src/app/state/settings/mod.rs @@ -32,14 +32,16 @@ pub struct SettingsState { data_dir: PathBuf, wallet: Arc, setting: Option>, + internal_bitcoind: bool, } impl SettingsState { - pub fn new(data_dir: PathBuf, wallet: Arc) -> Self { + pub fn new(data_dir: PathBuf, wallet: Arc, internal_bitcoind: bool) -> Self { Self { data_dir, wallet, setting: None, + internal_bitcoind, } } } @@ -58,6 +60,7 @@ impl State for SettingsState { daemon.config().cloned(), cache, daemon.is_external(), + self.internal_bitcoind, ) .into(), );