Remove bitcoind from settings panel if remote backend

This commit is contained in:
edouardparis 2024-06-17 17:11:52 +02:00
parent 5e2fe3b6c1
commit 3b60a57bd4
3 changed files with 38 additions and 19 deletions

View File

@ -58,6 +58,7 @@ impl Panels {
cache: &Cache, cache: &Cache,
wallet: Arc<Wallet>, wallet: Arc<Wallet>,
data_dir: PathBuf, data_dir: PathBuf,
daemon_backend: DaemonBackend,
internal_bitcoind: Option<&Bitcoind>, internal_bitcoind: Option<&Bitcoind>,
) -> Panels { ) -> Panels {
Self { Self {
@ -77,6 +78,7 @@ impl Panels {
settings: state::SettingsState::new( settings: state::SettingsState::new(
data_dir, data_dir,
wallet.clone(), wallet.clone(),
daemon_backend,
internal_bitcoind.is_some(), internal_bitcoind.is_some(),
), ),
} }
@ -134,7 +136,13 @@ impl App {
data_dir: PathBuf, data_dir: PathBuf,
internal_bitcoind: Option<Bitcoind>, internal_bitcoind: Option<Bitcoind>,
) -> (App, Command<Message>) { ) -> (App, Command<Message>) {
let mut panels = Panels::new(&cache, wallet.clone(), data_dir, internal_bitcoind.as_ref()); let mut panels = Panels::new(
&cache,
wallet.clone(),
data_dir,
daemon.backend(),
internal_bitcoind.as_ref(),
);
let cmd = panels.home.reload(daemon.clone(), wallet.clone()); let cmd = panels.home.reload(daemon.clone(), wallet.clone());
( (
Self { Self {

View File

@ -21,15 +21,22 @@ pub struct SettingsState {
data_dir: PathBuf, data_dir: PathBuf,
wallet: Arc<Wallet>, wallet: Arc<Wallet>,
setting: Option<Box<dyn State>>, setting: Option<Box<dyn State>>,
daemon_backend: DaemonBackend,
internal_bitcoind: bool, internal_bitcoind: bool,
} }
impl SettingsState { impl SettingsState {
pub fn new(data_dir: PathBuf, wallet: Arc<Wallet>, internal_bitcoind: bool) -> Self { pub fn new(
data_dir: PathBuf,
wallet: Arc<Wallet>,
daemon_backend: DaemonBackend,
internal_bitcoind: bool,
) -> Self {
Self { Self {
data_dir, data_dir,
wallet, wallet,
setting: None, setting: None,
daemon_backend,
internal_bitcoind, internal_bitcoind,
} }
} }
@ -97,7 +104,7 @@ impl State for SettingsState {
if let Some(setting) = &self.setting { if let Some(setting) = &self.setting {
setting.view(cache) setting.view(cache)
} else { } else {
view::settings::list(cache) view::settings::list(cache, self.daemon_backend == DaemonBackend::RemoteBackend)
} }
} }

View File

@ -32,7 +32,7 @@ use crate::{
hw::HardwareWallet, hw::HardwareWallet,
}; };
pub fn list(cache: &Cache) -> Element<Message> { pub fn list(cache: &Cache, is_remote_backend: bool) -> Element<Message> {
dashboard( dashboard(
&Menu::Settings, &Menu::Settings,
cache, cache,
@ -44,23 +44,27 @@ pub fn list(cache: &Cache) -> Element<Message> {
Button::new(text("Settings").size(30).bold()) Button::new(text("Settings").size(30).bold())
.style(theme::Button::Transparent) .style(theme::Button::Transparent)
.on_press(Message::Menu(Menu::Settings))) .on_press(Message::Menu(Menu::Settings)))
.push( .push_maybe(
Container::new( if !is_remote_backend {
Button::new( Some(Container::new(
Row::new() Button::new(
.push(badge::Badge::new(icon::bitcoin_icon())) Row::new()
.push(text("Bitcoin Core").bold()) .push(badge::Badge::new(icon::bitcoin_icon()))
.padding(10) .push(text("Bitcoin Core").bold())
.spacing(20) .padding(10)
.align_items(Alignment::Center) .spacing(20)
.width(Length::Fill), .align_items(Alignment::Center)
.width(Length::Fill),
)
.width(Length::Fill)
.style(theme::Button::TransparentBorder)
.on_press(Message::Settings(SettingsMessage::EditBitcoindSettings))
) )
.width(Length::Fill) .width(Length::Fill)
.style(theme::Button::TransparentBorder) .style(theme::Container::Card(theme::Card::Simple)))
.on_press(Message::Settings(SettingsMessage::EditBitcoindSettings)) } else {
) None
.width(Length::Fill) }
.style(theme::Container::Card(theme::Card::Simple))
) )
.push( .push(
Container::new( Container::new(