diff --git a/extensions/whatsapp/src/active-listener.ts b/extensions/whatsapp/src/active-listener.ts index fc8f11fe20e..0e9cf09925b 100644 --- a/extensions/whatsapp/src/active-listener.ts +++ b/extensions/whatsapp/src/active-listener.ts @@ -1,6 +1,7 @@ import { formatCliCommand } from "../../../src/cli/command-format.js"; import type { PollInput } from "../../../src/polls.js"; import { DEFAULT_ACCOUNT_ID } from "../../../src/routing/session-key.js"; +import { resolveGlobalMap } from "../../../src/shared/global-singleton.js"; export type ActiveWebSendOptions = { gifPlayback?: boolean; @@ -28,9 +29,8 @@ export type ActiveWebListener = { close?: () => Promise; }; -let _currentListener: ActiveWebListener | null = null; - -const listeners = new Map(); +const WA_LISTENERS_KEY = Symbol.for("openclaw.whatsappActiveListeners"); +const listeners = resolveGlobalMap(WA_LISTENERS_KEY); export function resolveWebAccountId(accountId?: string | null): string { return (accountId ?? "").trim() || DEFAULT_ACCOUNT_ID; @@ -73,9 +73,6 @@ export function setActiveWebListener( } else { listeners.set(id, listener); } - if (id === DEFAULT_ACCOUNT_ID) { - _currentListener = listener; - } } export function getActiveWebListener(accountId?: string | null): ActiveWebListener | null {