From 2e758d36910b009b3fe178c89bdb72dee486c68d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 18:02:55 +0000 Subject: [PATCH] refactor(gateway): share node event sessionKey parsing --- src/gateway/server-node-events.ts | 35 +++++++++++++++---------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/gateway/server-node-events.ts b/src/gateway/server-node-events.ts index 8dc56262bd..360cde40bb 100644 --- a/src/gateway/server-node-events.ts +++ b/src/gateway/server-node-events.ts @@ -69,6 +69,21 @@ async function touchSessionStore(params: { }); } +function parseSessionKeyFromPayloadJSON(payloadJSON: string): string | null { + let payload: unknown; + try { + payload = JSON.parse(payloadJSON) as unknown; + } catch { + return null; + } + if (typeof payload !== "object" || payload === null) { + return null; + } + const obj = payload as Record; + const sessionKey = typeof obj.sessionKey === "string" ? obj.sessionKey.trim() : ""; + return sessionKey.length > 0 ? sessionKey : null; +} + export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt: NodeEvent) => { switch (evt.event) { case "voice.transcript": { @@ -187,15 +202,7 @@ export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt if (!evt.payloadJSON) { return; } - let payload: unknown; - try { - payload = JSON.parse(evt.payloadJSON) as unknown; - } catch { - return; - } - const obj = - typeof payload === "object" && payload !== null ? (payload as Record) : {}; - const sessionKey = typeof obj.sessionKey === "string" ? obj.sessionKey.trim() : ""; + const sessionKey = parseSessionKeyFromPayloadJSON(evt.payloadJSON); if (!sessionKey) { return; } @@ -206,15 +213,7 @@ export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt if (!evt.payloadJSON) { return; } - let payload: unknown; - try { - payload = JSON.parse(evt.payloadJSON) as unknown; - } catch { - return; - } - const obj = - typeof payload === "object" && payload !== null ? (payload as Record) : {}; - const sessionKey = typeof obj.sessionKey === "string" ? obj.sessionKey.trim() : ""; + const sessionKey = parseSessionKeyFromPayloadJSON(evt.payloadJSON); if (!sessionKey) { return; }