From 3c45a4a3aa7ff32a205cf4ed003317393e52e8cb Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 2 Sep 2023 22:38:55 -0500 Subject: [PATCH] sign: simplify awaitSignedEvent (remove unnecessary conditional, rearrange error, fix crash) --- src/sign.ts | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/sign.ts b/src/sign.ts index 94b8c62..e260af7 100644 --- a/src/sign.ts +++ b/src/sign.ts @@ -70,34 +70,26 @@ async function awaitSignedEvent( Sub.close(messageId); } - const timeout = setTimeout(() => { - close(); - throw new HTTPException(408, { - res: c.json({ id: 'ditto.timeout', error: 'Signing timeout' }), - }); - }, Time.minutes(1)); + const timeout = setTimeout(close, Time.minutes(1)); for await (const event of sub) { - if (event.kind === 24133) { - const decrypted = await decryptAdmin(event.pubkey, event.content); + const decrypted = await decryptAdmin(event.pubkey, event.content); - const result = jsonSchema - .pipe(connectResponseSchema) - .refine((msg) => msg.id === messageId) - .refine((msg) => eventMatchesTemplate(msg.result, template)) - .safeParse(decrypted); + const result = jsonSchema + .pipe(connectResponseSchema) + .refine((msg) => msg.id === messageId, 'Message ID mismatch') + .refine((msg) => eventMatchesTemplate(msg.result, template), 'Event template mismatch') + .safeParse(decrypted); - if (result.success) { - close(); - clearTimeout(timeout); - return result.data.result as Event; - } + if (result.success) { + close(); + clearTimeout(timeout); + return result.data.result as Event; } } - // This should never happen. - throw new HTTPException(500, { - res: c.json({ id: 'ditto.sign', error: 'Unable to sign event' }, 500), + throw new HTTPException(408, { + res: c.json({ id: 'ditto.timeout', error: 'Signing timeout' }), }); }