diff --git a/packages/app/src/Components/Relay/Relay.tsx b/packages/app/src/Components/Relay/Relay.tsx
index 7d861e9d..98192d46 100644
--- a/packages/app/src/Components/Relay/Relay.tsx
+++ b/packages/app/src/Components/Relay/Relay.tsx
@@ -40,7 +40,7 @@ export default function Relay(props: RelayProps) {
-
{stats?.Info?.name}
-
{stats?.Info?.description}
+
{stats?.info?.name}
+
{stats?.info?.description}
- {stats?.Info?.pubkey && (
+ {stats?.info?.pubkey && (
<>
-
+
>
)}
- {stats?.Info?.software && (
+ {stats?.info?.software && (
)}
- {stats?.Info?.contact && (
+ {stats?.info?.contact && (
)}
- {stats?.Info?.supported_nips && (
+ {stats?.info?.supported_nips && (
<>
>
)}
-
-
-
-
- {[...(stats?.ActiveRequests ?? [])].map(a => (
-
- {a}
-
- ))}
-
-
-
-
-
- {stats?.PendingRequests?.map(a => (
-
- {a.obj[1]}
-
- ))}
-
+ {conn instanceof Connection && (
+ <>
+
+
+
+
+ {conn.ActiveRequests.map(a => (
+
+ {a}
+
+ ))}
+
+ >
+ )}
+ {conn instanceof Connection && (
+ <>
+
+
+
+
+ {conn.PendingRequests.map(a => (
+
+ {a.obj[1]}
+
+ ))}
+
+ >
+ )}
{
- await login.state.removeRelay(unwrap(conn).Address, true);
+ await login.state.removeRelay(unwrap(conn).address, true);
navigate("/settings/relays");
}}>
diff --git a/packages/app/src/Pages/settings/Relays.tsx b/packages/app/src/Pages/settings/Relays.tsx
index d1f7c161..f161753d 100644
--- a/packages/app/src/Pages/settings/Relays.tsx
+++ b/packages/app/src/Pages/settings/Relays.tsx
@@ -78,7 +78,7 @@ const RelaySettingsPage = () => {
{otherConnections.map(a => (
-
+
))}
diff --git a/packages/app/src/Utils/Zapper.ts b/packages/app/src/Utils/Zapper.ts
index 606b5341..6256908d 100644
--- a/packages/app/src/Utils/Zapper.ts
+++ b/packages/app/src/Utils/Zapper.ts
@@ -104,7 +104,7 @@ export class Zapper {
if (!svc) {
throw new Error(`Failed to get invoice from ${t.value}`);
}
- const relays = [...this.system.pool].filter(([, v]) => !v.Ephemeral).map(([k]) => k);
+ const relays = [...this.system.pool].filter(([, v]) => !v.ephemeral).map(([k]) => k);
const pub = t.zap?.anon ?? false ? EventPublisher.privateKey(generateRandomKey().privateKey) : this.publisher;
const zap =
t.zap && svc.canZap
diff --git a/packages/system/src/connection-pool.ts b/packages/system/src/connection-pool.ts
index de8a6f5e..0acb084a 100644
--- a/packages/system/src/connection-pool.ts
+++ b/packages/system/src/connection-pool.ts
@@ -31,6 +31,7 @@ export type ConnectionType = {
readonly address: string;
readonly info: RelayInfo | undefined;
readonly isDown: boolean;
+ readonly isOpen: boolean;
settings: RelaySettings;
ephemeral: boolean;
diff --git a/packages/system/src/ndk-system.ts b/packages/system/src/ndk-system.ts
index a7caf76c..1588af0f 100644
--- a/packages/system/src/ndk-system.ts
+++ b/packages/system/src/ndk-system.ts
@@ -3,7 +3,14 @@ import { QueryLike, SystemConfig, SystemInterface } from "./system";
import { RelaySettings, SyncCommand } from "./connection";
import { TaggedNostrEvent, NostrEvent, OkResponse, ReqCommand } from "./nostr";
import { BuiltRawReqFilter, RequestBuilder } from "./request-builder";
-import NDK, { NDKConstructorParams, NDKEvent, NDKFilter, NDKRelay, NDKSubscription } from "@nostr-dev-kit/ndk";
+import NDK, {
+ NDKConstructorParams,
+ NDKEvent,
+ NDKFilter,
+ NDKRelay,
+ NDKSubscription,
+ NDKRelayStatus,
+} from "@nostr-dev-kit/ndk";
import { SystemBase } from "./system-base";
import { ConnectionPool, ConnectionType, ConnectionTypeEvents, DefaultConnectionPool } from "./connection-pool";
import { RelayMetadataLoader } from "./outbox";
@@ -53,7 +60,11 @@ class NDKConnection extends EventEmitter
implements Connec
}
get isDown() {
- return !this.relay.connectivity.isAvailable();
+ return this.relay.connectivity.status === NDKRelayStatus.FLAPPING;
+ }
+
+ get isOpen() {
+ return this.relay.connectivity.status === NDKRelayStatus.CONNECTED;
}
info: RelayInfo | undefined;