From 2acd23ebbe88def5b604c194e713985b12e7b682 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 27 Feb 2025 17:32:54 -0600 Subject: [PATCH] Remove `@/config.ts` import from utils/instance.ts --- packages/ditto/DittoPush.ts | 4 ++-- packages/ditto/controllers/api/ditto.ts | 4 ++-- packages/ditto/controllers/api/instance.ts | 12 +++++------ packages/ditto/controllers/frontend.ts | 2 +- packages/ditto/controllers/manifest.ts | 4 +--- .../ditto/controllers/nostr/relay-info.ts | 4 ++-- packages/ditto/utils/instance.ts | 21 +++++++++++++------ 7 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/ditto/DittoPush.ts b/packages/ditto/DittoPush.ts index 3a378300..c1dded38 100644 --- a/packages/ditto/DittoPush.ts +++ b/packages/ditto/DittoPush.ts @@ -14,10 +14,10 @@ export class DittoPush { private server: Promise; constructor(opts: DittoPushOpts) { - const { conf, relay } = opts; + const { conf } = opts; this.server = (async () => { - const meta = await getInstanceMetadata(relay); + const meta = await getInstanceMetadata(opts); const keys = await conf.vapidKeys; if (keys) { diff --git a/packages/ditto/controllers/api/ditto.ts b/packages/ditto/controllers/api/ditto.ts index be0a2c85..7493085a 100644 --- a/packages/ditto/controllers/api/ditto.ts +++ b/packages/ditto/controllers/api/ditto.ts @@ -327,7 +327,7 @@ const updateInstanceSchema = z.object({ }); export const updateInstanceController: AppController = async (c) => { - const { conf, relay, signal } = c.var; + const { conf } = c.var; const body = await parseBody(c.req.raw); const result = updateInstanceSchema.safeParse(body); @@ -337,7 +337,7 @@ export const updateInstanceController: AppController = async (c) => { return c.json(result.error, 422); } - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); await updateAdminEvent( { kinds: [0], authors: [pubkey], limit: 1 }, diff --git a/packages/ditto/controllers/api/instance.ts b/packages/ditto/controllers/api/instance.ts index 1fb742e5..a887fe4d 100644 --- a/packages/ditto/controllers/api/instance.ts +++ b/packages/ditto/controllers/api/instance.ts @@ -15,9 +15,9 @@ const features = [ ]; const instanceV1Controller: AppController = async (c) => { - const { conf, relay, signal } = c.var; + const { conf } = c.var; const { host, protocol } = conf.url; - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); /** Protocol to use for WebSocket URLs, depending on the protocol of the `LOCAL_DOMAIN`. */ const wsProtocol = protocol === 'http:' ? 'ws:' : 'wss:'; @@ -75,9 +75,9 @@ const instanceV1Controller: AppController = async (c) => { }; const instanceV2Controller: AppController = async (c) => { - const { conf, relay, signal } = c.var; + const { conf } = c.var; const { host, protocol } = conf.url; - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); /** Protocol to use for WebSocket URLs, depending on the protocol of the `LOCAL_DOMAIN`. */ const wsProtocol = protocol === 'http:' ? 'ws:' : 'wss:'; @@ -164,9 +164,7 @@ const instanceV2Controller: AppController = async (c) => { }; const instanceDescriptionController: AppController = async (c) => { - const { relay, signal } = c.var; - - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); return c.json({ content: meta.about, diff --git a/packages/ditto/controllers/frontend.ts b/packages/ditto/controllers/frontend.ts index ad98a9aa..c0a6848f 100644 --- a/packages/ditto/controllers/frontend.ts +++ b/packages/ditto/controllers/frontend.ts @@ -40,7 +40,7 @@ async function getEntities(c: AppContext, params: { acct?: string; statusId?: st const { relay } = c.var; const entities: MetadataEntities = { - instance: await getInstanceMetadata(relay), + instance: await getInstanceMetadata(c.var), }; if (params.statusId) { diff --git a/packages/ditto/controllers/manifest.ts b/packages/ditto/controllers/manifest.ts index 70d42dea..7d49ba1e 100644 --- a/packages/ditto/controllers/manifest.ts +++ b/packages/ditto/controllers/manifest.ts @@ -3,9 +3,7 @@ import { WebManifestCombined } from '@/types/webmanifest.ts'; import { getInstanceMetadata } from '@/utils/instance.ts'; export const manifestController: AppController = async (c) => { - const { relay, signal } = c.var; - - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); const manifest: WebManifestCombined = { description: meta.about, diff --git a/packages/ditto/controllers/nostr/relay-info.ts b/packages/ditto/controllers/nostr/relay-info.ts index 50702c23..945e311b 100644 --- a/packages/ditto/controllers/nostr/relay-info.ts +++ b/packages/ditto/controllers/nostr/relay-info.ts @@ -4,9 +4,9 @@ import { AppController } from '@/app.ts'; import { getInstanceMetadata } from '@/utils/instance.ts'; const relayInfoController: AppController = async (c) => { - const { conf, relay, signal } = c.var; + const { conf } = c.var; - const meta = await getInstanceMetadata(relay, signal); + const meta = await getInstanceMetadata(c.var); c.res.headers.set('access-control-allow-origin', '*'); diff --git a/packages/ditto/utils/instance.ts b/packages/ditto/utils/instance.ts index 3f746e07..52fe7358 100644 --- a/packages/ditto/utils/instance.ts +++ b/packages/ditto/utils/instance.ts @@ -1,9 +1,10 @@ import { NostrEvent, NostrMetadata, NSchema as n, NStore } from '@nostrify/nostrify'; import { z } from 'zod'; -import { Conf } from '@/config.ts'; import { screenshotsSchema, serverMetaSchema } from '@/schemas/nostr.ts'; +import type { DittoConf } from '@ditto/conf'; + /** Like NostrMetadata, but some fields are required and also contains some extra fields. */ export interface InstanceMetadata extends NostrMetadata { about: string; @@ -15,10 +16,18 @@ export interface InstanceMetadata extends NostrMetadata { screenshots: z.infer; } +interface GetInstanceMetadataOpts { + conf: DittoConf; + relay: NStore; + signal?: AbortSignal; +} + /** Get and parse instance metadata from the kind 0 of the admin user. */ -export async function getInstanceMetadata(store: NStore, signal?: AbortSignal): Promise { - const [event] = await store.query( - [{ kinds: [0], authors: [await Conf.signer.getPublicKey()], limit: 1 }], +export async function getInstanceMetadata(opts: GetInstanceMetadataOpts): Promise { + const { conf, relay, signal } = opts; + + const [event] = await relay.query( + [{ kinds: [0], authors: [await conf.signer.getPublicKey()], limit: 1 }], { signal }, ); @@ -33,8 +42,8 @@ export async function getInstanceMetadata(store: NStore, signal?: AbortSignal): name: meta.name ?? 'Ditto', about: meta.about ?? 'Nostr community server', tagline: meta.tagline ?? meta.about ?? 'Nostr community server', - email: meta.email ?? `postmaster@${Conf.url.host}`, - picture: meta.picture ?? Conf.local('/images/thumbnail.png'), + email: meta.email ?? `postmaster@${conf.url.host}`, + picture: meta.picture ?? conf.local('/images/thumbnail.png'), event, screenshots: meta.screenshots ?? [], };