Nostr Address Relays
- {#each handle.profile.relays || [] as url}
+ {#each $person.handle.profile.relays || [] as url}
{:else}
diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts
index dcabe7e6..847d1013 100644
--- a/src/engine/Engine.ts
+++ b/src/engine/Engine.ts
@@ -4,12 +4,7 @@ import {Crypt} from "./components/Crypt"
import {Directory} from "./components/Directory"
import {Events} from "./components/Events"
import {Keys} from "./components/Keys"
-import {Network} from "./components/Network"
import {Nip04} from "./components/Nip04"
-import {Nip05} from "./components/Nip05"
-import {Nip28} from "./components/Nip28"
-import {Nip44} from "./components/Nip44"
-import {Settings} from "./components/Settings"
export class Engine {
Env: Env
@@ -18,12 +13,7 @@ export class Engine {
Directory = new Directory()
Events = new Events()
Keys = new Keys()
- Network = new Network()
Nip04 = new Nip04()
- Nip05 = new Nip05()
- Nip28 = new Nip28()
- Nip44 = new Nip44()
- Settings = new Settings()
constructor(Env: Env) {
this.Env = Env
diff --git a/src/engine/components/Network.ts b/src/engine/components/Network.ts
deleted file mode 100644
index 679bbed0..00000000
--- a/src/engine/components/Network.ts
+++ /dev/null
@@ -1,215 +0,0 @@
-import {omit} from "ramda"
-import {Pool, Plex, Relays, Executor} from "paravel"
-import {noop, ensurePlural, union, difference} from "hurdak"
-import {warn, error, info} from "src/util/logger"
-import {normalizeRelayUrl} from "src/util/nostr"
-import type {Event, Filter} from "src/engine/types"
-import type {Engine} from "src/engine/Engine"
-import {Subscription} from "src/engine/util/Subscription"
-
-export type Progress = {
- event: Event
- succeeded: Set
- failed: Set
- timeouts: Set
- completed: Set
- pending: Set
-}
-
-export type PublishOpts = {
- event: Event
- relays: string[]
- onProgress?: (p: Progress) => void
- timeout?: number
- verb?: string
-}
-
-export type SubscribeOpts = {
- relays: string[]
- filter: Filter[] | Filter
- onEvent?: (event: Event) => void
- onEose?: (url: string) => void
- onClose?: () => void
- timeout?: number
- shouldProcess?: boolean
-}
-
-export class Network {
- engine: Engine
- pool = new Pool()
- authHandler: (url: string, challenge: string) => void
-
- relayIsLowQuality = (url: string) => this.pool.get(url, {autoConnect: false})?.meta?.quality < 0.6
-
- getUrls = (relays: string[]) => {
- if (this.engine.Env.FORCE_RELAYS?.length > 0) {
- return this.engine.Env.FORCE_RELAYS
- }
-
- if (relays.length === 0) {
- error(`Attempted to connect to zero urls`)
- }
-
- const urls = new Set(relays.map(normalizeRelayUrl))
-
- if (urls.size !== relays.length) {
- warn(`Attempted to connect to non-unique relays`)
- }
-
- return Array.from(urls)
- }
-
- getExecutor = (urls: string[], {bypassBoot = false} = {}) => {
- let target
-
- const muxUrl = this.engine.Settings.getSetting("multiplextr_url")
-
- // Try to use our multiplexer, but if it fails to connect fall back to relays. If
- // we're only connecting to a single relay, just do it directly, unless we already
- // have a connection to the multiplexer open, in which case we're probably doing
- // AUTH with a single relay.
- if (muxUrl && (urls.length > 1 || this.pool.has(muxUrl))) {
- const connection = this.pool.get(muxUrl)
-
- if (connection.socket.isHealthy()) {
- target = new Plex(urls, connection)
- }
- }
-
- if (!target) {
- target = new Relays(urls.map(url => this.pool.get(url)))
- }
-
- const executor = new Executor(target)
-
- if (this.authHandler) {
- executor.handleAuth({onAuth: this.authHandler, onOk: noop})
- }
-
- return executor
- }
-
- publish = ({
- relays,
- event,
- onProgress,
- timeout = 3000,
- verb = "EVENT",
- }: PublishOpts): Promise