Merge branch 'pleroma-conf' into 'main'

Remove `@/config.ts` import from utils/pleroma.ts

See merge request soapbox-pub/ditto!699
This commit is contained in:
Alex Gleason 2025-02-27 20:25:34 +00:00
commit 9cb49e5f96
3 changed files with 18 additions and 13 deletions

View file

@ -7,9 +7,7 @@ import { lookupPubkey } from '@/utils/lookup.ts';
import { getPleromaConfigs } from '@/utils/pleroma.ts'; import { getPleromaConfigs } from '@/utils/pleroma.ts';
const frontendConfigController: AppController = async (c) => { const frontendConfigController: AppController = async (c) => {
const { relay, signal } = c.var; const configDB = await getPleromaConfigs(c.var);
const configDB = await getPleromaConfigs(relay, signal);
const frontendConfig = configDB.get(':pleroma', ':frontend_configurations'); const frontendConfig = configDB.get(':pleroma', ':frontend_configurations');
if (frontendConfig) { if (frontendConfig) {
@ -25,17 +23,15 @@ const frontendConfigController: AppController = async (c) => {
}; };
const configController: AppController = async (c) => { const configController: AppController = async (c) => {
const { relay, signal } = c.var; const configs = await getPleromaConfigs(c.var);
const configs = await getPleromaConfigs(relay, signal);
return c.json({ configs, need_reboot: false }); return c.json({ configs, need_reboot: false });
}; };
/** Pleroma admin config controller. */ /** Pleroma admin config controller. */
const updateConfigController: AppController = async (c) => { 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()); const { configs: newConfigs } = z.object({ configs: z.array(configSchema) }).parse(await c.req.json());
configs.merge(newConfigs); configs.merge(newConfigs);

View file

@ -9,7 +9,7 @@ export const cspMiddleware = (): AppMiddleware => {
const { conf, relay } = c.var; const { conf, relay } = c.var;
if (!configDBCache) { if (!configDBCache) {
configDBCache = getPleromaConfigs(relay); configDBCache = getPleromaConfigs({ conf, relay });
} }
const { host, protocol, origin } = conf.url; const { host, protocol, origin } = conf.url;

View file

@ -1,14 +1,23 @@
import { NSchema as n, NStore } from '@nostrify/nostrify'; import { NSchema as n, NStore } from '@nostrify/nostrify';
import { Conf } from '@/config.ts';
import { configSchema } from '@/schemas/pleroma-api.ts'; import { configSchema } from '@/schemas/pleroma-api.ts';
import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts'; import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts';
export async function getPleromaConfigs(store: NStore, signal?: AbortSignal): Promise<PleromaConfigDB> { import type { DittoConf } from '@ditto/conf';
const signer = Conf.signer;
interface GetPleromaConfigsOpts {
conf: DittoConf;
relay: NStore;
signal?: AbortSignal;
}
export async function getPleromaConfigs(opts: GetPleromaConfigsOpts): Promise<PleromaConfigDB> {
const { conf, relay, signal } = opts;
const signer = conf.signer;
const pubkey = await signer.getPublicKey(); const pubkey = await signer.getPublicKey();
const [event] = await store.query([{ const [event] = await relay.query([{
kinds: [30078], kinds: [30078],
authors: [pubkey], authors: [pubkey],
'#d': ['pub.ditto.pleroma.config'], '#d': ['pub.ditto.pleroma.config'],