diff --git a/crates/chat/src/lib.rs b/crates/chat/src/lib.rs index 8b565cc..3991887 100644 --- a/crates/chat/src/lib.rs +++ b/crates/chat/src/lib.rs @@ -131,14 +131,14 @@ impl ChatRegistry { if event == &StateEvent::SignerSet { this.reset(cx); this.get_rooms(cx); + this.get_contact_list(cx); + this.get_messages(cx); }; }), ); // Run at the end of the current cycle cx.defer_in(window, |this, _window, cx| { - this.get_contact_list(cx); - this.get_messages(cx); this.get_rooms(cx); this.handle_notifications(cx); this.tracking(cx); diff --git a/crates/coop/src/workspace.rs b/crates/coop/src/workspace.rs index f882be3..3049172 100644 --- a/crates/coop/src/workspace.rs +++ b/crates/coop/src/workspace.rs @@ -127,6 +127,9 @@ impl Workspace { // Clear the signer notification window.clear_notification::(cx); } + StateEvent::Show => { + this.account_selector(window, cx); + } _ => {} }; }), diff --git a/crates/state/src/lib.rs b/crates/state/src/lib.rs index 491f998..9760ffa 100644 --- a/crates/state/src/lib.rs +++ b/crates/state/src/lib.rs @@ -50,6 +50,8 @@ pub enum StateEvent { Connected, /// Creating the signer Creating, + /// Show the identity dialog + Show, /// A new signer has been set SignerSet, /// An error occurred @@ -151,6 +153,9 @@ impl NostrRegistry { // Create an identity if none exists if this.npubs.read(cx).is_empty() { this.create_identity(cx); + } else { + // Show the identity dialog + cx.emit(StateEvent::Show); } }); @@ -275,13 +280,17 @@ impl NostrRegistry { let app_keys = self.app_keys.clone(); if let Ok(payload) = std::fs::read_to_string(key_path) { - cx.background_spawn(async move { - let decrypted = app_keys.nip44_decrypt(&public_key, &payload).await?; - let secret = SecretKey::parse(&decrypted)?; - let keys = Keys::new(secret); + if payload.starts_with("nsec1") || payload.starts_with("bunker://") { + cx.background_spawn(async move { + let decrypted = app_keys.nip44_decrypt(&public_key, &payload).await?; + let secret = SecretKey::parse(&decrypted)?; + let keys = Keys::new(secret); - Ok(keys.into_nostr_signer()) - }) + Ok(keys.into_nostr_signer()) + }) + } else { + self.get_secret_keyring(&npub, cx) + } } else { self.get_secret_keyring(&npub, cx) }