From d9c540ad1442bc7787fe33b69b2e60b62e17a650 Mon Sep 17 00:00:00 2001 From: pythcoiner Date: Sun, 6 Jul 2025 05:33:31 +0200 Subject: [PATCH] liana-ui: add warning to form::Value --- liana-gui/src/app/settings.rs | 1 + liana-gui/src/app/state/label.rs | 1 + liana-gui/src/app/state/settings/bitcoind.rs | 5 +++++ liana-gui/src/app/state/settings/wallet.rs | 2 ++ liana-gui/src/app/state/transactions.rs | 1 + liana-gui/src/installer/step/backend.rs | 1 + liana-gui/src/installer/step/descriptor/editor/key.rs | 5 +++-- liana-gui/src/installer/step/descriptor/editor/mod.rs | 1 + liana-ui/src/component/form.rs | 4 +++- 9 files changed, 18 insertions(+), 3 deletions(-) diff --git a/liana-gui/src/app/settings.rs b/liana-gui/src/app/settings.rs index 303d77f2..af0ba3fd 100644 --- a/liana-gui/src/app/settings.rs +++ b/liana-gui/src/app/settings.rs @@ -342,6 +342,7 @@ impl KeySetting { pub fn to_form(&self) -> form::Value { form::Value { value: self.name.clone(), + warning: None, valid: true, } } diff --git a/liana-gui/src/app/state/label.rs b/liana-gui/src/app/state/label.rs index bc399f07..a9b71231 100644 --- a/liana-gui/src/app/state/label.rs +++ b/liana-gui/src/app/state/label.rs @@ -38,6 +38,7 @@ impl LabelsEdited { item, form::Value { valid, + warning: None, value: value.clone(), }, ); diff --git a/liana-gui/src/app/state/settings/bitcoind.rs b/liana-gui/src/app/state/settings/bitcoind.rs index 5a8fe585..c04288f0 100644 --- a/liana-gui/src/app/state/settings/bitcoind.rs +++ b/liana-gui/src/app/state/settings/bitcoind.rs @@ -245,6 +245,7 @@ impl BitcoindSettings { RpcAuthValues { cookie_path: form::Value { valid: true, + warning: None, value: path.to_str().unwrap().to_string(), }, user: form::Value::default(), @@ -257,10 +258,12 @@ impl BitcoindSettings { cookie_path: form::Value::default(), user: form::Value { valid: true, + warning: None, value: user.clone(), }, password: form::Value { valid: true, + warning: None, value: password.clone(), }, }, @@ -284,6 +287,7 @@ impl BitcoindSettings { selected_auth_type, addr: form::Value { valid: true, + warning: None, value: addr, }, } @@ -423,6 +427,7 @@ impl ElectrumSettings { processing: false, addr: form::Value { valid: true, + warning: None, value: addr, }, } diff --git a/liana-gui/src/app/state/settings/wallet.rs b/liana-gui/src/app/state/settings/wallet.rs index 342e5e36..63f81076 100644 --- a/liana-gui/src/app/state/settings/wallet.rs +++ b/liana-gui/src/app/state/settings/wallet.rs @@ -65,6 +65,7 @@ impl WalletSettingsState { keys_aliases: Self::keys_aliases(&wallet), wallet_alias: form::Value { value: wallet.alias.clone().unwrap_or_default(), + warning: None, valid: true, }, wallet, @@ -86,6 +87,7 @@ impl WalletSettingsState { fg, form::Value { value: name, + warning: None, valid: true, }, ) diff --git a/liana-gui/src/app/state/transactions.rs b/liana-gui/src/app/state/transactions.rs index 3aca960f..8e9d745f 100644 --- a/liana-gui/src/app/state/transactions.rs +++ b/liana-gui/src/app/state/transactions.rs @@ -388,6 +388,7 @@ impl CreateRbfModal { descendant_txids, feerate_val: form::Value { valid: true, + warning: None, value: min_feerate_vb.to_string(), }, // For cancel, we let `rbfpsbt` set the feerate. diff --git a/liana-gui/src/installer/step/backend.rs b/liana-gui/src/installer/step/backend.rs index 78153328..f1a788ff 100644 --- a/liana-gui/src/installer/step/backend.rs +++ b/liana-gui/src/installer/step/backend.rs @@ -250,6 +250,7 @@ impl Step for RemoteBackendLogin { self.step = ConnectionStep::EnterEmail { email: form::Value { value: email.clone(), + warning: None, valid: true, }, }; diff --git a/liana-gui/src/installer/step/descriptor/editor/key.rs b/liana-gui/src/installer/step/descriptor/editor/key.rs index 9b0bbc91..20f71546 100644 --- a/liana-gui/src/installer/step/descriptor/editor/key.rs +++ b/liana-gui/src/installer/step/descriptor/editor/key.rs @@ -73,8 +73,6 @@ pub struct EditXpubModal { form_name: form::Value, form_xpub: form::Value, - // TODO: Define new `form::Value` type with `Option` instead of `bool` so that we can - // store `form_token_warning` directly in `form_token`. form_token: form::Value, form_token_warning: Option, /// The `KeySourceKind` corresponding to the required form for entering a new key. @@ -115,10 +113,12 @@ impl EditXpubModal { other_path_keys, form_name: form::Value { valid: true, + warning: None, value: key.as_ref().map(|k| k.name.clone()).unwrap_or_default(), }, form_xpub: form::Value { valid: true, + warning: None, value: key .as_ref() .filter(|k| k.source.is_manual()) @@ -127,6 +127,7 @@ impl EditXpubModal { }, form_token: form::Value { valid: true, + warning: None, value: key .as_ref() .and_then(|k| k.source.token().cloned()) diff --git a/liana-gui/src/installer/step/descriptor/editor/mod.rs b/liana-gui/src/installer/step/descriptor/editor/mod.rs index 9284c5ac..b5fd9716 100644 --- a/liana-gui/src/installer/step/descriptor/editor/mod.rs +++ b/liana-gui/src/installer/step/descriptor/editor/mod.rs @@ -520,6 +520,7 @@ impl EditSequenceModal { path_index, sequence: form::Value { value: path_sequence.as_u16().to_string(), + warning: None, valid: true, }, } diff --git a/liana-ui/src/component/form.rs b/liana-ui/src/component/form.rs index 7f8d1516..2fee870e 100644 --- a/liana-ui/src/component/form.rs +++ b/liana-ui/src/component/form.rs @@ -7,6 +7,7 @@ use crate::{color, component::text, theme, widget::*}; #[derive(Debug, Clone)] pub struct Value { pub value: T, + pub warning: Option<&'static str>, pub valid: bool, } @@ -14,6 +15,7 @@ impl std::default::Default for Value { fn default() -> Self { Self { value: "".to_string(), + warning: None, valid: true, } } @@ -41,7 +43,7 @@ where { Self { input: text_input::TextInput::new(placeholder, &value.value).on_input(on_change), - warning: None, + warning: value.warning, valid: value.valid, } }