fix: TUI shows ETH address, /peer 0x... resolves, Cmd+key on macOS

TUI header: shows ETH address (0x...) instead of fingerprint
/peer 0x...: resolves via GET /v1/resolve/:address endpoint
Cmd+A/E/U/K/W: macOS SUPER modifier now handled alongside CONTROL
Added resolve_address() method for ETH/any address resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-03-29 08:20:38 +04:00
parent 3efce2ddf4
commit 2aa58a4319
4 changed files with 55 additions and 10 deletions

View File

@@ -379,6 +379,12 @@ impl App {
Some(resolved) => resolved,
None => return,
}
} else if raw.starts_with("0x") || raw.starts_with("0X") {
// Resolve ETH address via server
match self.resolve_address(&raw, client).await {
Some(resolved) => resolved,
None => return,
}
} else {
raw
};
@@ -928,6 +934,29 @@ impl App {
}
}
/// Resolve an ETH address (0x...) or any address format via the server.
pub(crate) async fn resolve_address(&self, addr: &str, client: &ServerClient) -> Option<String> {
let url = format!("{}/v1/resolve/{}", client.base_url, addr);
match client.client.get(&url).send().await {
Ok(resp) => {
if let Ok(data) = resp.json::<serde_json::Value>().await {
if let Some(fp) = data.get("fingerprint").and_then(|v| v.as_str()) {
self.add_message(ChatLine { sender: "system".into(), text: format!("{} → {}", addr, &fp[..fp.len().min(16)]), is_system: true, is_self: false, message_id: None, timestamp: Local::now() });
return Some(fp.to_string());
}
if let Some(err) = data.get("error") {
self.add_message(ChatLine { sender: "system".into(), text: format!("Cannot resolve {}: {}", addr, err), is_system: true, is_self: false, message_id: None, timestamp: Local::now() });
}
}
None
}
Err(e) => {
self.add_message(ChatLine { sender: "system".into(), text: format!("Error: {}", e), is_system: true, is_self: false, message_id: None, timestamp: Local::now() });
None
}
}
}
async fn list_aliases(&self, client: &ServerClient) {
let url = format!("{}/v1/alias/list", client.base_url);
match client.client.get(&url).send().await {