From 2266152df3ccc06d8eb43218f47501d84fa18abf Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 27 Feb 2025 14:02:44 -0600 Subject: [PATCH] Remove `@/config.ts` import from utils/zap-split.ts --- packages/ditto/app.ts | 2 +- packages/ditto/controllers/api/ditto.ts | 14 +++++++----- packages/ditto/controllers/api/statuses.ts | 2 +- packages/ditto/utils/zap-split.ts | 26 +++++++++++++++------- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/packages/ditto/app.ts b/packages/ditto/app.ts index f417b1b0..8e818552 100644 --- a/packages/ditto/app.ts +++ b/packages/ditto/app.ts @@ -202,7 +202,7 @@ const pgstore = new DittoPgStore({ const pool = new DittoPool({ conf, relay: pgstore }); const relay = new DittoRelayStore({ db, conf, relay: pgstore }); -await seedZapSplits(relay); +await seedZapSplits({ conf, relay }); if (conf.firehoseEnabled) { startFirehose({ diff --git a/packages/ditto/controllers/api/ditto.ts b/packages/ditto/controllers/api/ditto.ts index 38c72eb4..be0a2c85 100644 --- a/packages/ditto/controllers/api/ditto.ts +++ b/packages/ditto/controllers/api/ditto.ts @@ -186,7 +186,8 @@ const zapSplitSchema = z.record( ); export const updateZapSplitsController: AppController = async (c) => { - const { conf, relay } = c.var; + const { conf } = c.var; + const body = await parseBody(c.req.raw); const result = zapSplitSchema.safeParse(body); @@ -196,7 +197,7 @@ export const updateZapSplitsController: AppController = async (c) => { const adminPubkey = await conf.signer.getPublicKey(); - const dittoZapSplit = await getZapSplits(relay, adminPubkey); + const dittoZapSplit = await getZapSplits(adminPubkey, c.var); if (!dittoZapSplit) { return c.json({ error: 'Zap split not activated, restart the server.' }, 404); } @@ -223,7 +224,8 @@ export const updateZapSplitsController: AppController = async (c) => { const deleteZapSplitSchema = z.array(n.id()).min(1); export const deleteZapSplitsController: AppController = async (c) => { - const { conf, relay } = c.var; + const { conf } = c.var; + const body = await parseBody(c.req.raw); const result = deleteZapSplitSchema.safeParse(body); @@ -233,7 +235,7 @@ export const deleteZapSplitsController: AppController = async (c) => { const adminPubkey = await conf.signer.getPublicKey(); - const dittoZapSplit = await getZapSplits(relay, adminPubkey); + const dittoZapSplit = await getZapSplits(adminPubkey, c.var); if (!dittoZapSplit) { return c.json({ error: 'Zap split not activated, restart the server.' }, 404); } @@ -253,9 +255,9 @@ export const deleteZapSplitsController: AppController = async (c) => { }; export const getZapSplitsController: AppController = async (c) => { - const { conf, relay } = c.var; + const { conf } = c.var; - const dittoZapSplit: DittoZapSplits | undefined = await getZapSplits(relay, await conf.signer.getPublicKey()) ?? {}; + const dittoZapSplit: DittoZapSplits | undefined = await getZapSplits(await conf.signer.getPublicKey(), c.var) ?? {}; if (!dittoZapSplit) { return c.json({ error: 'Zap split not activated, restart the server.' }, 404); } diff --git a/packages/ditto/controllers/api/statuses.ts b/packages/ditto/controllers/api/statuses.ts index 8bc04151..53fab57a 100644 --- a/packages/ditto/controllers/api/statuses.ts +++ b/packages/ditto/controllers/api/statuses.ts @@ -196,7 +196,7 @@ const createStatusController: AppController = async (c) => { if (conf.zapSplitsEnabled) { const meta = n.json().pipe(n.metadata()).catch({}).parse(author?.content); const lnurl = getLnurl(meta); - const dittoZapSplit = await getZapSplits(relay, await conf.signer.getPublicKey()); + const dittoZapSplit = await getZapSplits(await conf.signer.getPublicKey(), c.var); if (lnurl && dittoZapSplit) { const totalSplit = Object.values(dittoZapSplit).reduce((total, { weight }) => total + weight, 0); for (const zapPubkey in dittoZapSplit) { diff --git a/packages/ditto/utils/zap-split.ts b/packages/ditto/utils/zap-split.ts index 85b6f056..a9d5ba2b 100644 --- a/packages/ditto/utils/zap-split.ts +++ b/packages/ditto/utils/zap-split.ts @@ -1,8 +1,9 @@ -import { Conf } from '@/config.ts'; import { NSchema as n, NStore } from '@nostrify/nostrify'; import { nostrNow } from '@/utils.ts'; import { percentageSchema } from '@/schema.ts'; +import type { DittoConf } from '@ditto/conf'; + type Pubkey = string; type ExtraMessage = string; /** Number from 1 to 100, stringified. */ @@ -12,11 +13,18 @@ export type DittoZapSplits = { [key: Pubkey]: { weight: splitPercentages; message: ExtraMessage }; }; +interface GetZapSplitsOpts { + conf: DittoConf; + relay: NStore; +} + /** Gets zap splits from NIP-78 in DittoZapSplits format. */ -export async function getZapSplits(store: NStore, pubkey: string): Promise { +export async function getZapSplits(pubkey: string, opts: GetZapSplitsOpts): Promise { + const { relay } = opts; + const zapSplits: DittoZapSplits = {}; - const [event] = await store.query([{ + const [event] = await relay.query([{ authors: [pubkey], kinds: [30078], '#d': ['pub.ditto.zapSplits'], @@ -36,15 +44,17 @@ export async function getZapSplits(store: NStore, pubkey: string): Promise { + const { conf, relay } = opts; + + const pubkey = await conf.signer.getPublicKey(); + const zapSplit: DittoZapSplits | undefined = await getZapSplits(pubkey, opts); if (!zapSplit) { const dittoPubkey = '781a1527055f74c1f70230f10384609b34548f8ab6a0a6caa74025827f9fdae5'; const dittoMsg = 'Official Ditto Account'; - const signer = Conf.signer; - const event = await signer.signEvent({ + const event = await conf.signer.signEvent({ content: '', created_at: nostrNow(), kind: 30078, @@ -54,6 +64,6 @@ export async function seedZapSplits(store: NStore) { ], }); - await store.event(event); + await relay.event(event); } }