Merge #691: Allow rescan for external daemon and internal bitcoind

7c02557bc86bbac0f0511ea9a793105a5d7ddbb5 Allow rescan for external daemon and internal bitcoind (edouard)

Pull request description:

ACKs for top commit:
  darosior:
    ACK 7c02557bc86bbac0f0511ea9a793105a5d7ddbb5 -- tested locally, i can now rescan on my mainnet wallet with an internal bitcoind.

Tree-SHA512: 2c3df72a0e3764c41ee8bcfe99b2c61fb14e98da0326e7245640fb3b1fd70cfc42568e3ca76434975198c4871aca76c5cfc96195c408cfe0041eae199dfafa69
This commit is contained in:
edouard 2023-09-07 10:39:20 +02:00
commit cea73728bc
No known key found for this signature in database
GPG Key ID: E65F7A089C20DC8F

View File

@ -21,8 +21,6 @@ use crate::{
pub struct BitcoindSettingsState {
warning: Option<Error>,
config_updated: bool,
daemon_is_external: bool,
bitcoind_is_internal: bool,
settings: Vec<Box<dyn Setting>>,
current: Option<usize>,
@ -40,6 +38,8 @@ impl BitcoindSettingsState {
BitcoindSettings::new(
config.bitcoin_config.clone(),
config.bitcoind_config.clone().unwrap(),
daemon_is_external,
bitcoind_is_internal,
)
.into(),
RescanSetting::new(cache.rescan_progress).into(),
@ -49,8 +49,6 @@ impl BitcoindSettingsState {
};
BitcoindSettingsState {
daemon_is_external,
bitcoind_is_internal,
warning: None,
config_updated: false,
settings,
@ -113,8 +111,7 @@ 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 && !self.bitcoind_is_internal;
let can_edit = self.current.is_none();
view::settings::bitcoind_settings(
cache,
self.warning.as_ref(),
@ -145,6 +142,8 @@ pub struct BitcoindSettings {
processing: bool,
cookie_path: form::Value<String>,
addr: form::Value<String>,
daemon_is_external: bool,
bitcoind_is_internal: bool,
}
impl From<BitcoindSettings> for Box<dyn Setting> {
@ -154,10 +153,17 @@ impl From<BitcoindSettings> for Box<dyn Setting> {
}
impl BitcoindSettings {
fn new(bitcoin_config: BitcoinConfig, bitcoind_config: BitcoindConfig) -> BitcoindSettings {
fn new(
bitcoin_config: BitcoinConfig,
bitcoind_config: BitcoindConfig,
daemon_is_external: bool,
bitcoind_is_internal: bool,
) -> BitcoindSettings {
let path = bitcoind_config.cookie_path.to_str().unwrap().to_string();
let addr = bitcoind_config.addr.to_string();
BitcoindSettings {
daemon_is_external,
bitcoind_is_internal,
bitcoind_config,
bitcoin_config,
edit: false,
@ -245,7 +251,7 @@ impl Setting for BitcoindSettings {
&self.bitcoind_config,
cache.blockheight,
Some(cache.blockheight != 0),
can_edit,
can_edit && !self.daemon_is_external && !self.bitcoind_is_internal,
)
}
}