This commit is contained in:
Ren Amamiya
2026-04-02 19:33:29 +07:00
parent d1f0373916
commit fbc9883680
3 changed files with 20 additions and 8 deletions

View File

@@ -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);

View File

@@ -127,6 +127,9 @@ impl Workspace {
// Clear the signer notification
window.clear_notification::<SignerNotifcation>(cx);
}
StateEvent::Show => {
this.account_selector(window, cx);
}
_ => {}
};
}),

View File

@@ -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)
}