add remove signer
Some checks failed
Rust / build (ubuntu-latest, stable) (push) Failing after 1m34s
Rust / build (ubuntu-latest, stable) (pull_request) Failing after 1m31s
Rust / build (macos-latest, stable) (push) Has been cancelled
Rust / build (windows-latest, stable) (push) Has been cancelled
Rust / build (macos-latest, stable) (pull_request) Has been cancelled
Rust / build (windows-latest, stable) (pull_request) Has been cancelled
Some checks failed
Rust / build (ubuntu-latest, stable) (push) Failing after 1m34s
Rust / build (ubuntu-latest, stable) (pull_request) Failing after 1m31s
Rust / build (macos-latest, stable) (push) Has been cancelled
Rust / build (windows-latest, stable) (push) Has been cancelled
Rust / build (macos-latest, stable) (pull_request) Has been cancelled
Rust / build (windows-latest, stable) (pull_request) Has been cancelled
This commit is contained in:
@@ -82,6 +82,14 @@ impl AccountSelector {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove(&mut self, public_key: PublicKey, cx: &mut Context<Self>) {
|
||||||
|
let nostr = NostrRegistry::global(cx);
|
||||||
|
|
||||||
|
nostr.update(cx, |this, cx| {
|
||||||
|
this.remove_signer(&public_key, cx);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
fn open_import(&mut self, window: &mut Window, cx: &mut Context<Self>) {
|
fn open_import(&mut self, window: &mut Window, cx: &mut Context<Self>) {
|
||||||
let import = cx.new(|cx| ImportKey::new(window, cx));
|
let import = cx.new(|cx| ImportKey::new(window, cx));
|
||||||
|
|
||||||
@@ -138,13 +146,36 @@ impl Render for AccountSelector {
|
|||||||
.group("")
|
.group("")
|
||||||
.px_2()
|
.px_2()
|
||||||
.h_10()
|
.h_10()
|
||||||
.gap_2()
|
.justify_between()
|
||||||
.w_full()
|
.w_full()
|
||||||
.rounded(cx.theme().radius)
|
.rounded(cx.theme().radius)
|
||||||
.bg(cx.theme().ghost_element_background)
|
.bg(cx.theme().ghost_element_background)
|
||||||
.hover(|this| this.bg(cx.theme().ghost_element_hover))
|
.hover(|this| this.bg(cx.theme().ghost_element_hover))
|
||||||
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.gap_2()
|
||||||
.child(Avatar::new(profile.avatar()).small())
|
.child(Avatar::new(profile.avatar()).small())
|
||||||
.child(div().text_sm().child(profile.name()))
|
.child(div().text_sm().child(profile.name())),
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.gap_1()
|
||||||
|
.invisible()
|
||||||
|
.group_hover("", |this| this.visible())
|
||||||
|
.child(
|
||||||
|
Button::new(format!("del-{ix}"))
|
||||||
|
.icon(IconName::Close)
|
||||||
|
.ghost()
|
||||||
|
.small()
|
||||||
|
.on_click(cx.listener({
|
||||||
|
let public_key = *public_key;
|
||||||
|
move |this, _ev, _window, cx| {
|
||||||
|
cx.stop_propagation();
|
||||||
|
this.remove(public_key, cx);
|
||||||
|
}
|
||||||
|
})),
|
||||||
|
),
|
||||||
|
)
|
||||||
.on_click(cx.listener({
|
.on_click(cx.listener({
|
||||||
let public_key = *public_key;
|
let public_key = *public_key;
|
||||||
move |this, _ev, window, cx| {
|
move |this, _ev, window, cx| {
|
||||||
|
|||||||
@@ -458,8 +458,15 @@ impl Workspace {
|
|||||||
|
|
||||||
h_flex()
|
h_flex()
|
||||||
.flex_shrink_0()
|
.flex_shrink_0()
|
||||||
.justify_between()
|
|
||||||
.gap_2()
|
.gap_2()
|
||||||
|
.when_none(¤t_user, |this| {
|
||||||
|
this.child(
|
||||||
|
div()
|
||||||
|
.text_xs()
|
||||||
|
.text_color(cx.theme().text_muted)
|
||||||
|
.child(SharedString::from("Choose an account to continue...")),
|
||||||
|
)
|
||||||
|
})
|
||||||
.when_some(current_user.as_ref(), |this, public_key| {
|
.when_some(current_user.as_ref(), |this, public_key| {
|
||||||
let persons = PersonRegistry::global(cx);
|
let persons = PersonRegistry::global(cx);
|
||||||
let profile = persons.read(cx).get(public_key, cx);
|
let profile = persons.read(cx).get(public_key, cx);
|
||||||
|
|||||||
@@ -466,6 +466,27 @@ impl NostrRegistry {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Remove a signer from the keyring
|
||||||
|
pub fn remove_signer(&mut self, public_key: &PublicKey, cx: &mut Context<Self>) {
|
||||||
|
let public_key = public_key.to_owned();
|
||||||
|
let npub = public_key.to_bech32().unwrap();
|
||||||
|
let keys_dir = config_dir().join("keys");
|
||||||
|
|
||||||
|
self.tasks.push(cx.spawn(async move |this, cx| {
|
||||||
|
let key_path = keys_dir.join(format!("{}.npub", npub));
|
||||||
|
smol::fs::remove_file(key_path).await?;
|
||||||
|
|
||||||
|
this.update(cx, |this, cx| {
|
||||||
|
this.npubs().update(cx, |this, cx| {
|
||||||
|
this.retain(|k| k != &public_key);
|
||||||
|
cx.notify();
|
||||||
|
});
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
/// Add a key signer to keyring
|
/// Add a key signer to keyring
|
||||||
pub fn add_key_signer(&mut self, keys: &Keys, cx: &mut Context<Self>) {
|
pub fn add_key_signer(&mut self, keys: &Keys, cx: &mut Context<Self>) {
|
||||||
let keys = keys.clone();
|
let keys = keys.clone();
|
||||||
|
|||||||
Reference in New Issue
Block a user