refactor: zap amount parsed with zod, change zapped_by fields name

This commit is contained in:
P. Reis
2024-06-13 14:21:01 -03:00
parent 7474c1b288
commit 22dbddb5d3
2 changed files with 11 additions and 12 deletions

View File

@@ -545,6 +545,7 @@ const zapController: AppController = async (c) => {
const zappedByController: AppController = async (c) => {
const id = c.req.param('id');
const store = await Storages.db();
const amountSchema = z.coerce.number().int().nonnegative().catch(0);
const events: DittoEvent[] = (await store.query([{ kinds: [9735], '#e': [id], limit: 100 }])).map((event) => {
const zapRequest = event.tags.find(([name]) => name === 'description')?.[1];
@@ -560,17 +561,13 @@ const zappedByController: AppController = async (c) => {
const results = (await Promise.all(
events.map(async (event) => {
const amount = event.tags.find(([name]) => name === 'amount')?.[1];
const onlyDigits = /^\d+$/;
if (!amount || !onlyDigits.test(amount)) return;
const amount = amountSchema.parse(event.tags.find(([name]) => name === 'amount')?.[1]);
const comment = event?.content ?? '';
const account = event?.author ? await renderAccount(event.author) : await accountFromPubkey(event.pubkey);
return {
zap_comment: comment,
zap_amount: Number(amount),
comment,
amount,
account,
};
}),