From 10e6d926bc634a521bf06e5466e9a39a196d3900 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 05:36:39 +0000 Subject: [PATCH] refactor(web): dedupe group gating history capture --- src/web/auto-reply/monitor/group-gating.ts | 64 ++++++++++++---------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/src/web/auto-reply/monitor/group-gating.ts b/src/web/auto-reply/monitor/group-gating.ts index d6fadf83bbd..bb024cfb955 100644 --- a/src/web/auto-reply/monitor/group-gating.ts +++ b/src/web/auto-reply/monitor/group-gating.ts @@ -28,6 +28,30 @@ function isOwnerSender(baseMentionConfig: MentionConfig, msg: WebInboundMsg) { return owners.includes(sender); } +function recordPendingGroupHistoryEntry(params: { + msg: WebInboundMsg; + groupHistories: Map; + groupHistoryKey: string; + groupHistoryLimit: number; +}) { + const sender = + params.msg.senderName && params.msg.senderE164 + ? `${params.msg.senderName} (${params.msg.senderE164})` + : (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown"); + recordPendingHistoryEntryIfEnabled({ + historyMap: params.groupHistories, + historyKey: params.groupHistoryKey, + limit: params.groupHistoryLimit, + entry: { + sender, + body: params.msg.body, + timestamp: params.msg.timestamp, + id: params.msg.id, + senderJid: params.msg.senderJid, + }, + }); +} + export function applyGroupGating(params: { cfg: ReturnType; msg: WebInboundMsg; @@ -68,21 +92,11 @@ export function applyGroupGating(params: { if (activationCommand.hasCommand && !owner) { params.logVerbose(`Ignoring /activation from non-owner in group ${params.conversationId}`); - const sender = - params.msg.senderName && params.msg.senderE164 - ? `${params.msg.senderName} (${params.msg.senderE164})` - : (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown"); - recordPendingHistoryEntryIfEnabled({ - historyMap: params.groupHistories, - historyKey: params.groupHistoryKey, - limit: params.groupHistoryLimit, - entry: { - sender, - body: params.msg.body, - timestamp: params.msg.timestamp, - id: params.msg.id, - senderJid: params.msg.senderJid, - }, + recordPendingGroupHistoryEntry({ + msg: params.msg, + groupHistories: params.groupHistories, + groupHistoryKey: params.groupHistoryKey, + groupHistoryLimit: params.groupHistoryLimit, }); return { shouldProcess: false }; } @@ -126,21 +140,11 @@ export function applyGroupGating(params: { params.logVerbose( `Group message stored for context (no mention detected) in ${params.conversationId}: ${params.msg.body}`, ); - const sender = - params.msg.senderName && params.msg.senderE164 - ? `${params.msg.senderName} (${params.msg.senderE164})` - : (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown"); - recordPendingHistoryEntryIfEnabled({ - historyMap: params.groupHistories, - historyKey: params.groupHistoryKey, - limit: params.groupHistoryLimit, - entry: { - sender, - body: params.msg.body, - timestamp: params.msg.timestamp, - id: params.msg.id, - senderJid: params.msg.senderJid, - }, + recordPendingGroupHistoryEntry({ + msg: params.msg, + groupHistories: params.groupHistories, + groupHistoryKey: params.groupHistoryKey, + groupHistoryLimit: params.groupHistoryLimit, }); return { shouldProcess: false }; }