diff --git a/packages/ditto/controllers/api/pleroma.ts b/packages/ditto/controllers/api/pleroma.ts index ef27696d..b4458c6c 100644 --- a/packages/ditto/controllers/api/pleroma.ts +++ b/packages/ditto/controllers/api/pleroma.ts @@ -7,9 +7,7 @@ import { lookupPubkey } from '@/utils/lookup.ts'; import { getPleromaConfigs } from '@/utils/pleroma.ts'; const frontendConfigController: AppController = async (c) => { - const { relay, signal } = c.var; - - const configDB = await getPleromaConfigs(relay, signal); + const configDB = await getPleromaConfigs(c.var); const frontendConfig = configDB.get(':pleroma', ':frontend_configurations'); if (frontendConfig) { @@ -25,17 +23,15 @@ const frontendConfigController: AppController = async (c) => { }; const configController: AppController = async (c) => { - const { relay, signal } = c.var; - - const configs = await getPleromaConfigs(relay, signal); + const configs = await getPleromaConfigs(c.var); return c.json({ configs, need_reboot: false }); }; /** Pleroma admin config controller. */ const updateConfigController: AppController = async (c) => { - const { conf, relay, signal } = c.var; + const { conf } = c.var; - const configs = await getPleromaConfigs(relay, signal); + const configs = await getPleromaConfigs(c.var); const { configs: newConfigs } = z.object({ configs: z.array(configSchema) }).parse(await c.req.json()); configs.merge(newConfigs); diff --git a/packages/ditto/middleware/cspMiddleware.ts b/packages/ditto/middleware/cspMiddleware.ts index 8e890101..4417a3a1 100644 --- a/packages/ditto/middleware/cspMiddleware.ts +++ b/packages/ditto/middleware/cspMiddleware.ts @@ -9,7 +9,7 @@ export const cspMiddleware = (): AppMiddleware => { const { conf, relay } = c.var; if (!configDBCache) { - configDBCache = getPleromaConfigs(relay); + configDBCache = getPleromaConfigs({ conf, relay }); } const { host, protocol, origin } = conf.url; diff --git a/packages/ditto/utils/pleroma.ts b/packages/ditto/utils/pleroma.ts index db3ca6a1..ae7588e3 100644 --- a/packages/ditto/utils/pleroma.ts +++ b/packages/ditto/utils/pleroma.ts @@ -1,14 +1,23 @@ import { NSchema as n, NStore } from '@nostrify/nostrify'; -import { Conf } from '@/config.ts'; import { configSchema } from '@/schemas/pleroma-api.ts'; import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts'; -export async function getPleromaConfigs(store: NStore, signal?: AbortSignal): Promise { - const signer = Conf.signer; +import type { DittoConf } from '@ditto/conf'; + +interface GetPleromaConfigsOpts { + conf: DittoConf; + relay: NStore; + signal?: AbortSignal; +} + +export async function getPleromaConfigs(opts: GetPleromaConfigsOpts): Promise { + const { conf, relay, signal } = opts; + + const signer = conf.signer; const pubkey = await signer.getPublicKey(); - const [event] = await store.query([{ + const [event] = await relay.query([{ kinds: [30078], authors: [pubkey], '#d': ['pub.ditto.pleroma.config'],