Change state load method for reload

This commit is contained in:
edouardparis 2024-02-26 14:53:28 +01:00
parent c15424abe5
commit ed363963b3
12 changed files with 32 additions and 45 deletions

View File

@ -129,13 +129,13 @@ impl App {
data_dir: PathBuf,
internal_bitcoind: Option<Bitcoind>,
) -> (App, Command<Message>) {
let panels = Panels::new(
let mut panels = Panels::new(
&cache,
wallet.clone(),
data_dir.clone(),
internal_bitcoind.as_ref(),
);
let cmd = panels.home.load(daemon.clone());
let cmd = panels.home.reload(daemon.clone());
(
Self {
panels,
@ -180,7 +180,7 @@ impl App {
_ => {}
};
self.panels.current = menu;
self.panels.current().load(self.daemon.clone())
self.panels.current_mut().reload(self.daemon.clone())
}
pub fn subscription(&self) -> Subscription<Message> {

View File

@ -150,7 +150,7 @@ impl State for CoinsPanel {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
let daemon1 = daemon.clone();
let daemon2 = daemon.clone();
Command::batch(vec![

View File

@ -44,7 +44,7 @@ pub trait State {
fn subscription(&self) -> Subscription<Message> {
Subscription::none()
}
fn load(&self, _daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, _daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
Command::none()
}
}
@ -211,8 +211,7 @@ impl State for Home {
};
}
Message::View(view::Message::Reload) => {
self.selected_event = None;
return self.load(daemon);
return self.reload(daemon);
}
Message::View(view::Message::Close) => {
self.selected_event = None;
@ -263,7 +262,8 @@ impl State for Home {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
self.selected_event = None;
let daemon1 = daemon.clone();
let daemon2 = daemon.clone();
let daemon3 = daemon.clone();

View File

@ -79,15 +79,8 @@ impl State for PsbtsPanel {
message: Message,
) -> Command<Message> {
match message {
Message::View(view::Message::Reload) => {
if self.selected_tx.is_some() {
self.selected_tx = None;
return self.load(daemon);
}
if self.import_tx.is_some() {
self.import_tx = None;
return self.load(daemon);
}
Message::View(view::Message::Reload) | Message::View(view::Message::Close) => {
return self.reload(daemon);
}
Message::SpendTxs(res) => match res {
Err(e) => self.warning = Some(e),
@ -101,16 +94,6 @@ impl State for PsbtsPanel {
self.import_tx = Some(ImportPsbtModal::new());
}
}
Message::View(view::Message::Close) => {
if self.selected_tx.is_some() {
self.selected_tx = None;
return self.load(daemon);
}
if self.import_tx.is_some() {
self.import_tx = None;
return self.load(daemon);
}
}
Message::View(view::Message::Select(i)) => {
if let Some(tx) = self.spend_txs.get(i) {
let tx = psbt::PsbtState::new(self.wallet.clone(), tx.clone(), true);
@ -140,7 +123,9 @@ impl State for PsbtsPanel {
}
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
self.selected_tx = None;
self.import_tx = None;
let daemon = daemon.clone();
Command::perform(
async move { daemon.list_spend_transactions(None).map_err(|e| e.into()) },

View File

@ -180,7 +180,7 @@ impl State for ReceivePanel {
}
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
// Fill at least with one address, user will then use the generate button.
if self.addresses.is_empty() {
let daemon = daemon.clone();

View File

@ -192,7 +192,7 @@ impl State for RecoveryPanel {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
let daemon = daemon.clone();
Command::perform(
async move {

View File

@ -16,7 +16,7 @@ use liana::{
use liana_ui::{component::form, widget::Element};
use crate::{
app::{cache::Cache, error::Error, message::Message, view, State},
app::{cache::Cache, error::Error, message::Message, state::settings::State, view},
bitcoind::{RpcAuthType, RpcAuthValues},
daemon::Daemon,
};

View File

@ -55,14 +55,14 @@ impl State for SettingsState {
);
self.setting
.as_mut()
.map(|s| s.load(daemon))
.map(|s| s.reload(daemon))
.unwrap_or_else(Command::none)
}
Message::View(view::Message::Settings(view::SettingsMessage::AboutSection)) => {
self.setting = Some(AboutSettingsState::default().into());
self.setting
.as_mut()
.map(|s| s.load(daemon))
.map(|s| s.reload(daemon))
.unwrap_or_else(Command::none)
}
Message::View(view::Message::Settings(view::SettingsMessage::EditWalletSettings)) => {
@ -71,7 +71,7 @@ impl State for SettingsState {
);
self.setting
.as_mut()
.map(|s| s.load(daemon))
.map(|s| s.reload(daemon))
.unwrap_or_else(Command::none)
}
_ => self
@ -97,6 +97,11 @@ impl State for SettingsState {
view::settings::list(cache)
}
}
fn reload(&mut self, _daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
self.setting = None;
Command::none()
}
}
impl From<SettingsState> for Box<dyn State> {
@ -145,7 +150,7 @@ impl State for AboutSettingsState {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
Command::perform(
async move { daemon.get_info().map_err(|e| e.into()) },
Message::Info,

View File

@ -180,7 +180,7 @@ impl State for WalletSettingsState {
}
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
Command::perform(
async move { daemon.get_info().map_err(|e| e.into()) },
Message::Info,

View File

@ -108,7 +108,7 @@ impl State for CreateSpendPanel {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
let daemon1 = daemon.clone();
let daemon2 = daemon.clone();
Command::batch(vec![

View File

@ -121,12 +121,8 @@ impl State for TransactionsPanel {
self.warning = e.into();
}
},
Message::View(view::Message::Reload) => {
self.selected_tx = None;
return self.load(daemon);
}
Message::View(view::Message::Close) => {
self.selected_tx = None;
Message::View(view::Message::Reload) | Message::View(view::Message::Close) => {
return self.reload(daemon);
}
Message::View(view::Message::Select(i)) => {
self.selected_tx = Some(i);
@ -229,7 +225,8 @@ impl State for TransactionsPanel {
Command::none()
}
fn load(&self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
fn reload(&mut self, daemon: Arc<dyn Daemon + Sync + Send>) -> Command<Message> {
self.selected_tx = None;
let daemon1 = daemon.clone();
let daemon2 = daemon.clone();
let daemon3 = daemon.clone();

View File

@ -38,7 +38,7 @@ impl<S: State + Send + 'static> Sandbox<S> {
}
pub async fn load(mut self, daemon: Arc<dyn Daemon + Sync + Send>, cache: &Cache) -> Self {
let cmd = self.state.load(daemon.clone());
let cmd = self.state.reload(daemon.clone());
for action in cmd.actions() {
if let Action::Future(f) = action {
let msg = f.await;