This commit is contained in:
2026-07-24 18:02:01 +07:00
parent d79d03b30e
commit bcb5a19bf2
3 changed files with 23 additions and 43 deletions

View File

@@ -61,6 +61,9 @@ impl ImportIdentity {
let value = self.key_input.read(cx).value();
let password = self.pass_input.read(cx).value();
// Set loading state
self.set_loading(true, cx);
if value.starts_with("ncryptsec1") {
self.ncryptsec(value, password, window, cx);
return;
@@ -86,7 +89,6 @@ impl ImportIdentity {
nostr.update(cx, |this, cx| {
this.set_signer(keys, cx);
});
window.close_modal(cx);
} else {
self.set_error("Invalid key", cx);
}
@@ -165,10 +167,17 @@ impl ImportIdentity {
.detach();
}
fn set_loading(&mut self, status: bool, cx: &mut Context<Self>) {
self.loading = status;
cx.notify();
}
fn set_error<S>(&mut self, message: S, cx: &mut Context<Self>)
where
S: Into<SharedString>,
{
self.set_loading(false, cx);
// Update error message
self.error.update(cx, |this, cx| {
*this = Some(message.into());
@@ -223,7 +232,7 @@ impl Render for ImportIdentity {
this.child(
div()
.text_xs()
.text_color(cx.theme().warning_active)
.text_color(cx.theme().text_warning)
.child(MSG),
)
})

View File

@@ -37,7 +37,6 @@ pub fn init(window: &mut Window, cx: &mut App) -> Entity<Workspace> {
}
struct DeviceNotifcation;
struct RelayNotifcation;
struct MsgRelayNotification;
#[derive(Action, Clone, PartialEq, Eq, Deserialize)]
@@ -86,8 +85,6 @@ impl Workspace {
cx.observe_in(&nostr, window, move |this, nostr, window, cx| {
if nostr.read(cx).current_user().is_some() {
this.set_center_layout(window, cx);
} else {
this.import_identity(window, cx);
}
}),
);
@@ -103,25 +100,15 @@ impl Workspace {
// Subscribe to the nostr events
cx.subscribe_in(&nostr, window, move |this, _state, event, window, cx| {
match event {
StateEvent::Connecting => {
let note = Notification::new()
.id::<RelayNotifcation>()
.message("Connecting to the bootstrap relays...")
.with_kind(NotificationKind::Info);
window.push_notification(note, cx);
}
StateEvent::Connected => {
let note = Notification::new()
.id::<RelayNotifcation>()
.message("Connected to the bootstrap relays")
.with_kind(NotificationKind::Success);
window.push_notification(note, cx);
}
StateEvent::SignerChanged => {
this.set_center_layout(window, cx);
window.close_all_modals(cx);
cx.defer_in(window, |_this, window, cx| {
window.close_all_modals(cx);
});
}
StateEvent::NoSigner => {
this.import_identity(window, cx);
}
_ => {}
};