/** @jsx h */ import { Fragment, FunctionComponent, h } from "https://esm.sh/preact@10.11.3"; import { tw } from "https://esm.sh/twind@0.16.16"; import { EventBus } from "../event-bus.ts"; import { WebSocketReadyState } from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/websocket.ts"; import { CenterClass, inputBorderClass, InputClass, LinearGradientsClass, NoOutlineClass, } from "./components/tw.ts"; import { UI_Interaction_Event } from "./app_update.ts"; import { ConnectionPool } from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/relay.ts"; import KeyView from "./key-view.tsx"; import { InMemoryAccountContext, NostrAccountContext, } from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/nostr.ts"; import { PrivateKey } from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/key.ts"; import { DividerBackgroundColor, ErrorColor, HoverButtonBackgroudColor, PrimaryTextColor, SuccessColor, TitleIconColor, WarnColor, } from "./style/colors.ts"; import { RelayIcon } from "./icons2/relay-icon.tsx"; import { DeleteIcon } from "./icons2/delete-icon.tsx"; export interface SettingProps { logout: () => void; pool: ConnectionPool; eventBus: EventBus; AddRelayButtonClickedError: string; AddRelayInput: string; myAccountContext: NostrAccountContext; } const colors = { "Connecting": WarnColor, "Open": SuccessColor, "Closing": WarnColor, "Closed": ErrorColor, }; export const Setting: FunctionComponent = (props: SettingProps) => { const relays = props.pool.getRelays().map( (r) => ({ url: r.url, status: r.ws.status(), }), ); let priKey: PrivateKey | undefined; const ctx = props.myAccountContext; if (ctx instanceof InMemoryAccountContext) { priKey = ctx.privateKey; } return (
); }; export function RelaySetting(props: { relays: { url: string; status: WebSocketReadyState; }[]; input: string; err: string; eventBus: EventBus; }) { const relays = props.relays; return (

Relays

Add Relay

{ props.eventBus.emit({ type: "AddRelayInputChange", url: e.currentTarget.value, }); }} value={props.input} placeholder="wss://" type="text" class={tw`${InputClass}`} />
{props.err ?

{props.err}

: undefined}
    {relays.map((r) => { return (
  • {r.status} {r.url}
  • ); })}
); }