diff --git a/gui/src/installer/step/descriptor/editor/key.rs b/gui/src/installer/step/descriptor/editor/key.rs index c6a910bb..8cc6849f 100644 --- a/gui/src/installer/step/descriptor/editor/key.rs +++ b/gui/src/installer/step/descriptor/editor/key.rs @@ -44,6 +44,7 @@ pub fn new_multixkey_from_xpub( #[derive(Clone)] pub struct Key { pub device_kind: Option, + pub is_hot_signer: bool, pub device_version: Option, pub name: String, pub fingerprint: Fingerprint, @@ -102,9 +103,9 @@ impl EditXpubModal { key_index: usize, network: Network, hot_signer: Arc>, + hot_signer_fingerprint: Fingerprint, keys: Vec, ) -> Self { - let hot_signer_fingerprint = hot_signer.lock().unwrap().fingerprint(); Self { device_must_support_tapminiscript, other_path_keys, diff --git a/gui/src/installer/step/descriptor/editor/mod.rs b/gui/src/installer/step/descriptor/editor/mod.rs index 233cad63..6aec613d 100644 --- a/gui/src/installer/step/descriptor/editor/mod.rs +++ b/gui/src/installer/step/descriptor/editor/mod.rs @@ -198,17 +198,20 @@ pub struct DefineDescriptor { modal: Option>, signer: Arc>, + signer_fingerprint: Fingerprint, error: Option, } impl DefineDescriptor { pub fn new(network: Network, signer: Arc>) -> Self { + let signer_fingerprint = signer.lock().unwrap().fingerprint(); Self { network, use_taproot: false, setup: Setup::new(), modal: None, + signer_fingerprint, signer, error: None, } @@ -259,6 +262,7 @@ impl Step for DefineDescriptor { } message::DefineKey::Edited(name, imported_key, kind, version) => { let fingerprint = imported_key.master_fingerprint(); + let is_hot_signer = self.signer_fingerprint == fingerprint; hws.set_alias(fingerprint, name.clone()); if let Some(key) = self .setup_mut() @@ -269,6 +273,7 @@ impl Step for DefineDescriptor { key.name = name; } else { self.setup_mut().keys.push(Key { + is_hot_signer, fingerprint, name, key: imported_key, @@ -300,6 +305,7 @@ impl Step for DefineDescriptor { i, network, self.signer.clone(), + self.signer_fingerprint, self.setup_mut() .keys .iter() @@ -354,6 +360,7 @@ impl Step for DefineDescriptor { } message::DefineKey::Edited(name, imported_key, kind, version) => { let fingerprint = imported_key.master_fingerprint(); + let is_hot_signer = self.signer_fingerprint == fingerprint; hws.set_alias(fingerprint, name.clone()); if let Some(key) = self .setup_mut() @@ -362,9 +369,13 @@ impl Step for DefineDescriptor { .find(|k| k.fingerprint == fingerprint) { key.name = name; + key.is_hot_signer = is_hot_signer; + key.device_kind = kind; + key.device_version = version; } else { self.setup_mut().keys.push(Key { fingerprint, + is_hot_signer, name, key: imported_key, device_kind: kind, @@ -396,6 +407,7 @@ impl Step for DefineDescriptor { j, self.network, self.signer.clone(), + self.signer_fingerprint, self.setup.keys.clone(), ); let cmd = modal.load();