diff --git a/server/lib/core/dispatch.ts b/server/lib/core/dispatch.ts index 73618a6..85d84d4 100644 --- a/server/lib/core/dispatch.ts +++ b/server/lib/core/dispatch.ts @@ -6,6 +6,7 @@ import { log } from "../lib/log"; import { loadTranslations, t as translate, type Translations } from "../lib/i18n"; import type { SendRecord } from "../lib/send-log"; import { recordSendBatch } from "../lib/send-log-batch"; +import { explainRoute } from "../config/schema"; import { messageTracker } from "../lib/message-tracker"; import { loadGroups, @@ -176,6 +177,15 @@ export async function dispatchEvent( message.mentionRoleIds = route.discordRoleIds; } + const detail: Record = { + title: message.title, + url: message.url, + description: message.description?.slice(0, 500), + match: explainRoute(route), + provider: event.provider, + installationId: event.installationId, + }; + for (const target of targets) { const targetStr = target.platform === "telegram" @@ -196,6 +206,7 @@ export async function dispatchEvent( deliveryId: string | undefined; actor: string | undefined; action: string | undefined; + detail: Record; } = { ts: Date.now(), routeId: route.id, @@ -206,6 +217,7 @@ export async function dispatchEvent( deliveryId: event.deliveryId, actor: (event.payload.sender as { login?: string } | undefined)?.login, action: event.payload.action as string | undefined, + detail, }; const started = Date.now(); diff --git a/server/lib/lib/idempotency.ts b/server/lib/lib/idempotency.ts index c76cb87..46e847f 100644 --- a/server/lib/lib/idempotency.ts +++ b/server/lib/lib/idempotency.ts @@ -43,7 +43,7 @@ export function d1IdempotencyStore(db: D1Database): IdempotencyStore { `INSERT INTO dedup_keys (key, claimed_at, expires_at) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET claimed_at = excluded.claimed_at, expires_at = excluded.expires_at - WHERE dedup_keys.expires_at < excluded.expires_at`, + WHERE dedup_keys.expires_at < excluded.claimed_at`, ) .bind(key, now, now + ttlSeconds * 1000) .run(); diff --git a/tests/d1-stores.test.ts b/tests/d1-stores.test.ts index c771533..de33af8 100644 --- a/tests/d1-stores.test.ts +++ b/tests/d1-stores.test.ts @@ -50,7 +50,7 @@ function createMockD1(): { dedupKeys.set(key, { claimedAt, expiresAt }); return { success: true, meta: { changes: 1 } }; } - if (existing.expiresAt < expiresAt) { + if (existing.expiresAt < claimedAt) { dedupKeys.set(key, { claimedAt, expiresAt }); return { success: true, meta: { changes: 1 } }; }