diff --git a/src/config/sessions/store.ts b/src/config/sessions/store.ts index 0f36e0ebbd..a4a0dbf8b5 100644 --- a/src/config/sessions/store.ts +++ b/src/config/sessions/store.ts @@ -55,7 +55,14 @@ function invalidateSessionStoreCache(storePath: string): void { } function normalizeSessionEntryDelivery(entry: SessionEntry): SessionEntry { - const normalized = normalizeSessionDeliveryFields(entry); + const normalized = normalizeSessionDeliveryFields({ + channel: entry.channel, + lastChannel: entry.lastChannel, + lastTo: entry.lastTo, + lastAccountId: entry.lastAccountId, + lastThreadId: entry.lastThreadId ?? entry.origin?.threadId, + deliveryContext: entry.deliveryContext, + }); const nextDelivery = normalized.deliveryContext; const sameDelivery = (entry.deliveryContext?.channel ?? undefined) === nextDelivery?.channel && diff --git a/src/utils/delivery-context.test.ts b/src/utils/delivery-context.test.ts index 705e6d27f0..e89d965057 100644 --- a/src/utils/delivery-context.test.ts +++ b/src/utils/delivery-context.test.ts @@ -75,6 +75,19 @@ describe("delivery context helpers", () => { accountId: undefined, threadId: "999", }); + + expect( + deliveryContextFromSession({ + channel: "telegram", + lastTo: " -1001 ", + origin: { threadId: 42 }, + }), + ).toEqual({ + channel: "telegram", + to: "-1001", + accountId: undefined, + threadId: 42, + }); }); it("normalizes delivery fields and mirrors them on session entries", () => { diff --git a/src/utils/delivery-context.ts b/src/utils/delivery-context.ts index 9f5803e17b..5e9db288be 100644 --- a/src/utils/delivery-context.ts +++ b/src/utils/delivery-context.ts @@ -90,10 +90,18 @@ export function normalizeSessionDeliveryFields(source?: DeliveryContextSessionSo } export function deliveryContextFromSession( - entry?: DeliveryContextSessionSource, + entry?: DeliveryContextSessionSource & { origin?: { threadId?: string | number } }, ): DeliveryContext | undefined { if (!entry) return undefined; - return normalizeSessionDeliveryFields(entry).deliveryContext; + const source: DeliveryContextSessionSource = { + channel: entry.channel, + lastChannel: entry.lastChannel, + lastTo: entry.lastTo, + lastAccountId: entry.lastAccountId, + lastThreadId: entry.lastThreadId ?? entry.origin?.threadId, + deliveryContext: entry.deliveryContext, + }; + return normalizeSessionDeliveryFields(source).deliveryContext; } export function mergeDeliveryContext(