/Relay

Custom Relay

{ if (e.key === 'Enter') { e.preventDefault(); handleCustomRelaySubmit(); } }} class="custom-relay-text-input" />
{#if loading}

Loading relays...

{:else}
{#if favoriteRelays.length > 0}

Favorite

{#each favoriteRelays as relay}
handleRelayClick(relay.url)} role="button" tabindex="0" onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleRelayClick(relay.url); } }} >
{relay.url}
{relay.connected ? '● Connected' : '○ Disconnected'}
{/each}
{/if} {#each ['Default', 'Profile', 'Thread Publish', 'GIF', 'Other'] as category} {@const categoryRelays = relays.filter(r => r.categories.includes(category))} {#if categoryRelays.length > 0}

{category}

{#each categoryRelays as relay}
handleRelayClick(relay.url)} role="button" tabindex="0" onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleRelayClick(relay.url); } }} >
{relay.url}
{relay.connected ? '● Connected' : '○ Disconnected'} {#if relay.categories.length > 1} {@const otherCategories = relay.categories.filter(c => c !== category)} {#if otherCategories.length > 0} {#each otherCategories as cat} {cat} {/each} {/if} {/if}
{/each}
{/if} {/each}
{/if}