feat: native context menu

This commit is contained in:
reya
2024-06-17 15:31:59 +07:00
parent 843895d876
commit d01cf8319d
10 changed files with 192 additions and 280 deletions

View File

@@ -91,7 +91,7 @@ pub async fn get_event_from(
return Err(err.to_string());
}
if (client.connect_relay(relay_hint).await).is_ok() {
if client.connect_relay(relay_hint).await.is_ok() {
match event_id {
Some(id) => {
match client
@@ -522,3 +522,79 @@ pub async fn repost(raw: &str, state: State<'_, Nostr>) -> Result<String, String
Err(err) => Err(err.to_string()),
}
}
#[tauri::command]
#[specta::specta]
pub async fn event_to_bech32(id: &str, state: State<'_, Nostr>) -> Result<String, String> {
let client = &state.client;
let event_id = match EventId::from_hex(id) {
Ok(id) => id,
Err(_) => return Err("ID is not valid.".into()),
};
let seens = client
.database()
.event_seen_on_relays(event_id)
.await
.unwrap();
match seens {
Some(set) => {
let relays = set.into_iter().collect::<Vec<_>>();
let event = Nip19Event::new(event_id, relays);
match event.to_bech32() {
Ok(id) => Ok(id),
Err(err) => Err(err.to_string()),
}
}
None => match event_id.to_bech32() {
Ok(id) => Ok(id),
Err(err) => Err(err.to_string()),
},
}
}
#[tauri::command]
#[specta::specta]
pub async fn user_to_bech32(user: &str, state: State<'_, Nostr>) -> Result<String, String> {
let client = &state.client;
let public_key = match PublicKey::from_str(user) {
Ok(pk) => pk,
Err(_) => return Err("Public Key is not valid.".into()),
};
match client
.get_events_of(
vec![Filter::new()
.author(public_key)
.kind(Kind::RelayList)
.limit(1)],
Some(Duration::from_secs(10)),
)
.await
{
Ok(events) => match events.first() {
Some(event) => {
let relay_list = nip65::extract_relay_list(event);
let relays = relay_list
.into_iter()
.map(|i| i.0.to_string())
.collect::<Vec<_>>();
let profile = Nip19Profile::new(public_key, relays).unwrap();
Ok(profile.to_bech32().unwrap())
}
None => match public_key.to_bech32() {
Ok(pk) => Ok(pk),
Err(err) => Err(err.to_string()),
},
},
Err(_) => match public_key.to_bech32() {
Ok(pk) => Ok(pk),
Err(err) => Err(err.to_string()),
},
}
}

View File

@@ -383,24 +383,6 @@ pub fn get_private_key(npub: &str) -> Result<String, String> {
}
}
#[tauri::command]
#[specta::specta]
pub fn event_to_bech32(id: &str, relays: Vec<String>) -> Result<String, ()> {
let event_id = EventId::from_hex(id).unwrap();
let event = Nip19Event::new(event_id, relays);
Ok(event.to_bech32().unwrap())
}
#[tauri::command]
#[specta::specta]
pub fn user_to_bech32(key: &str, relays: Vec<String>) -> Result<String, ()> {
let pubkey = PublicKey::from_str(key).unwrap();
let profile = Nip19Profile::new(pubkey, relays).unwrap();
Ok(profile.to_bech32().unwrap())
}
#[tauri::command]
#[specta::specta]
pub async fn verify_nip05(key: &str, nip05: &str) -> Result<bool, String> {