Merge pull request #49 from fiatjaf/readable-relays

readable relay domain names on relay browsing page
This commit is contained in:
Jon Staab 2023-05-12 05:14:48 -07:00 committed by GitHub
commit 9a3d770b82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 5 deletions

View File

@ -1,6 +1,7 @@
<script lang="ts">
import {Route} from "svelte-routing"
import {onReady} from "src/agent/db"
import {base64DecodeOrPlainWebSocketURL} from "src/util/misc"
import EnsureData from "src/app/EnsureData.svelte"
import Notifications from "src/app/views/Notifications.svelte"
import Bech32Entity from "src/app/views/Bech32Entity.svelte"
@ -71,9 +72,9 @@
</Route>
<Route path="/keys" component={UserKeys} />
<Route path="/relays" component={RelayList} />
<Route path="/relays/:b64url" let:params>
<Route path="/relays/:b64OrUrl" let:params>
{#key params.b64url}
<RelayDetail url={atob(params.b64url)} />
<RelayDetail url={base64DecodeOrPlainWebSocketURL(params.b64OrUrl)} />
{/key}
</Route>
<Route path="/profile" component={UserProfile} />

View File

@ -4,7 +4,7 @@
import {between} from "hurdak/lib/hurdak"
import {onMount} from "svelte"
import {fly} from "svelte/transition"
import {poll, stringToHue, hsl} from "src/util/misc"
import {poll, stringToHue, hsl, webSocketURLToPlainOrBase64} from "src/util/misc"
import Toggle from "src/partials/Toggle.svelte"
import Anchor from "src/partials/Anchor.svelte"
import pool from "src/agent/pool"
@ -55,7 +55,7 @@
<div class="flex items-center justify-between gap-2">
<div class="flex items-center gap-2 text-xl">
<i class={relay.url.startsWith("wss") ? "fa fa-lock" : "fa fa-unlock"} />
<Anchor type="unstyled" href={`/relays/${btoa(relay.url)}`}>
<Anchor type="unstyled" href={`/relays/${webSocketURLToPlainOrBase64(relay.url)}`}>
{last(relay.url.split("://"))}
</Anchor>
{#if showStatus}

View File

@ -2,6 +2,7 @@
import {onMount} from "svelte"
import {between} from "hurdak/lib/hurdak"
import {displayRelay} from "src/util/nostr"
import {webSocketURLToPlainOrBase64} from "src/util/misc"
import {poll, stringToHue, hsl} from "src/util/misc"
import Anchor from "src/partials/Anchor.svelte"
import pool from "src/agent/pool"
@ -23,7 +24,7 @@
<i class={relay.url.startsWith("wss") ? "fa fa-lock" : "fa fa-unlock"} />
<Anchor
type="unstyled"
href={`/relays/${btoa(relay.url)}`}
href={`/relays/${webSocketURLToPlainOrBase64(relay.url)}`}
class="border-b border-solid"
style={`border-color: ${hsl(stringToHue(relay.url))}`}>
{displayRelay(relay)}

View File

@ -394,3 +394,27 @@ export const shadeColor = (color, percent) => {
return "#" + RR + GG + BB
}
export const base64DecodeOrPlainWebSocketURL = (data: string): string => {
try {
return atob(data)
} catch (err) {
if (data.startsWith("ws://") || data.startsWith("wss://")) {
return data
}
return "wss://" + data
}
}
export const webSocketURLToPlainOrBase64 = (url: string): string => {
if (url.startsWith("ws://")) {
return btoa(url)
}
if (url.startsWith("wss://")) {
url = url.slice(6)
}
if (url.includes("/")) {
return btoa(url)
}
return url
}