diff --git a/gui/src/installer/context.rs b/gui/src/installer/context.rs index d77933cff..a6c901f56 100644 --- a/gui/src/installer/context.rs +++ b/gui/src/installer/context.rs @@ -4,6 +4,7 @@ use std::time::Duration; use crate::{ app::{ + config::InternalBitcoindExeConfig, settings::{KeySetting, Settings, WalletSetting}, wallet::DEFAULT_WALLET_NAME, }, @@ -33,7 +34,7 @@ pub struct Context { // we dont want to override the generated signer with it. pub recovered_signer: Option>, pub internal_bitcoind_config: Option, - pub internal_bitcoind_exe_path: Option, + pub internal_bitcoind_exe_config: Option, } impl Context { @@ -51,7 +52,7 @@ impl Context { hw_is_used: false, recovered_signer: None, internal_bitcoind_config: None, - internal_bitcoind_exe_path: None, + internal_bitcoind_exe_config: None, } } diff --git a/gui/src/installer/mod.rs b/gui/src/installer/mod.rs index ad04e9c8a..c916ff129 100644 --- a/gui/src/installer/mod.rs +++ b/gui/src/installer/mod.rs @@ -322,17 +322,6 @@ pub async fn install(ctx: Context, signer: Arc>) -> Result>) -> Result, rpc_port: Option, bitcoind_config: Option, + exe_config: Option, } #[derive(PartialEq, Eq, Debug, Clone)] @@ -453,7 +454,7 @@ impl Step for SelectBitcoindTypeStep { } } ctx.internal_bitcoind_config = None; - ctx.internal_bitcoind_exe_path = None; + ctx.internal_bitcoind_exe_config = None; } self.error = None; true @@ -601,6 +602,7 @@ impl StartInternalBitcoindStep { exe_path: None, rpc_port: None, bitcoind_config: None, + exe_config: None, } } } @@ -608,8 +610,8 @@ impl StartInternalBitcoindStep { impl Step for StartInternalBitcoindStep { fn load_context(&mut self, ctx: &Context) { if self.exe_path.is_none() { - self.exe_path = if ctx.internal_bitcoind_exe_path.is_some() { - ctx.internal_bitcoind_exe_path.clone() + self.exe_path = if let Some(exe_config) = ctx.internal_bitcoind_exe_config.clone() { + Some(exe_config.exe_path) } else { bitcoind_exe_path() }; @@ -652,7 +654,7 @@ impl Step for StartInternalBitcoindStep { exe_path: path.to_path_buf(), data_dir: datadir, }; - if let Err(e) = start_internal_bitcoind(&self.network, exe_config) { + if let Err(e) = start_internal_bitcoind(&self.network, exe_config.clone()) { self.started = Some(Err(StartInternalBitcoindError::CommandError(e.to_string()))); return Command::none(); @@ -689,6 +691,7 @@ impl Step for StartInternalBitcoindStep { ) { Ok(_) => { self.bitcoind_config = Some(bitcoind_config); + self.exe_config = Some(exe_config); self.started = Some(Ok(())); // Apply changes so that context is updated in case user selects "Previous". return Command::perform(async {}, |_| Message::Apply); @@ -719,13 +722,7 @@ impl Step for StartInternalBitcoindStep { // Any errors have been handled as part of `message::StartInternalBitcoindMsg::Start` if let Some(Ok(_)) = self.started { ctx.bitcoind_config = self.bitcoind_config.clone(); - ctx.internal_bitcoind_exe_path = Some( - self.exe_path - .clone() - .expect("Already added") - .canonicalize() - .expect("Failed to canonicalize exe path."), - ); + ctx.internal_bitcoind_exe_config = self.exe_config.clone(); return true; } false