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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user