feat: relay ping with RTT display, fix dead_code warning
Some checks failed
Build Release Binaries / build-amd64 (push) Has been cancelled

- New ping_relay Tauri command: QUIC connect with 3s timeout, returns RTT ms
- Relay status shown next to input field: "42ms" (green) or "offline" (red)
- Auto-pings on app startup and debounced on relay input change
- Fix SyncWrapper dead_code warning with #[allow(dead_code)]

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-04-06 12:41:28 +04:00
parent ed272d29f8
commit dddf5d2e2d
5 changed files with 78 additions and 1 deletions

View File

@@ -126,6 +126,33 @@ function renderRecentRooms(rooms: RecentRoom[]) {
applySettings();
// ── Relay ping ──
const relayStatusEl = document.getElementById("relay-status")!;
let pingDebounce: number | null = null;
async function pingRelay(address: string) {
relayStatusEl.textContent = "...";
relayStatusEl.className = "relay-status pinging";
try {
const rtt: number = await invoke("ping_relay", { relay: address });
relayStatusEl.textContent = `${rtt}ms`;
relayStatusEl.className = "relay-status online";
connectBtn.disabled = false;
} catch {
relayStatusEl.textContent = "offline";
relayStatusEl.className = "relay-status offline";
}
}
// Ping on load and when relay input changes
relayInput.addEventListener("input", () => {
if (pingDebounce) clearTimeout(pingDebounce);
pingDebounce = window.setTimeout(() => pingRelay(relayInput.value), 500);
});
// Initial ping
setTimeout(() => pingRelay(relayInput.value), 300);
// ── Load fingerprint at startup (no connection needed) ──
(async () => {
try {

View File

@@ -89,6 +89,25 @@ body {
border-color: var(--accent);
}
.relay-row {
display: flex;
align-items: center;
gap: 8px;
}
.relay-row input { flex: 1; }
.relay-status {
font-size: 11px;
white-space: nowrap;
min-width: 50px;
text-align: right;
}
.relay-status.online { color: var(--green); }
.relay-status.offline { color: var(--red); }
.relay-status.pinging { color: var(--text-dim); }
.form-row {
display: flex;
gap: 16px;