Skip to content

Commit 0273062

Browse files
committed
refactor(signal): lazy-load send runtime
1 parent b361667 commit 0273062

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

extensions/signal/src/channel.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@ import { markdownToSignalTextChunks } from "./format.js";
3030
import { signalMessageActions } from "./message-actions.js";
3131
import { resolveSignalOutboundTarget } from "./outbound-session.js";
3232
import { resolveSignalReactionLevel } from "./reaction-level.js";
33-
import { sendMessageSignal } from "./send.js";
3433
import { signalSetupAdapter } from "./setup-core.js";
3534
import {
3635
signalConfigAdapter,
3736
createSignalPluginBase,
3837
signalSecurityAdapter,
3938
signalSetupWizard,
4039
} from "./shared.js";
41-
type SignalSendFn = typeof sendMessageSignal;
40+
type SignalSendFn = typeof import("./send.runtime.js").sendMessageSignal;
4241
type SignalProbe = import("./probe.js").SignalProbe;
4342

4443
let signalMonitorModulePromise: Promise<typeof import("./monitor.js")> | null = null;
4544
let signalProbeModulePromise: Promise<typeof import("./probe.js")> | null = null;
45+
let signalSendRuntimePromise: Promise<typeof import("./send.runtime.js")> | null = null;
4646

4747
async function loadSignalMonitorModule() {
4848
signalMonitorModulePromise ??= import("./monitor.js");
@@ -54,12 +54,19 @@ async function loadSignalProbeModule() {
5454
return await signalProbeModulePromise;
5555
}
5656

57-
function resolveSignalSendContext(params: {
57+
async function loadSignalSendRuntime() {
58+
signalSendRuntimePromise ??= import("./send.runtime.js");
59+
return await signalSendRuntimePromise;
60+
}
61+
62+
async function resolveSignalSendContext(params: {
5863
cfg: Parameters<typeof resolveSignalAccount>[0]["cfg"];
5964
accountId?: string;
6065
deps?: { [channelId: string]: unknown };
6166
}) {
62-
const send = resolveOutboundSendDep<SignalSendFn>(params.deps, "signal") ?? sendMessageSignal;
67+
const send =
68+
resolveOutboundSendDep<SignalSendFn>(params.deps, "signal") ??
69+
(await loadSignalSendRuntime()).sendMessageSignal;
6370
const maxBytes = resolveChannelMediaMaxBytes({
6471
cfg: params.cfg,
6572
resolveChannelLimitMb: ({ cfg, accountId }) =>
@@ -79,7 +86,7 @@ async function sendSignalOutbound(params: {
7986
accountId?: string;
8087
deps?: { [channelId: string]: unknown };
8188
}) {
82-
const { send, maxBytes } = resolveSignalSendContext(params);
89+
const { send, maxBytes } = await resolveSignalSendContext(params);
8390
return await send(params.to, params.text, {
8491
cfg: params.cfg,
8592
...(params.mediaUrl ? { mediaUrl: params.mediaUrl } : {}),
@@ -162,7 +169,7 @@ async function sendFormattedSignalText(ctx: {
162169
deps?: { [channelId: string]: unknown };
163170
abortSignal?: AbortSignal;
164171
}) {
165-
const { send, maxBytes } = resolveSignalSendContext({
172+
const { send, maxBytes } = await resolveSignalSendContext({
166173
cfg: ctx.cfg,
167174
accountId: ctx.accountId ?? undefined,
168175
deps: ctx.deps,
@@ -209,7 +216,7 @@ async function sendFormattedSignalMedia(ctx: {
209216
abortSignal?: AbortSignal;
210217
}) {
211218
ctx.abortSignal?.throwIfAborted();
212-
const { send, maxBytes } = resolveSignalSendContext({
219+
const { send, maxBytes } = await resolveSignalSendContext({
213220
cfg: ctx.cfg,
214221
accountId: ctx.accountId ?? undefined,
215222
deps: ctx.deps,
@@ -329,7 +336,7 @@ export const signalPlugin: ChannelPlugin<ResolvedSignalAccount, SignalProbe> =
329336
message: PAIRING_APPROVED_MESSAGE,
330337
normalizeAllowEntry: createPairingPrefixStripper(/^signal:/i),
331338
notify: async ({ id, message }) => {
332-
await sendMessageSignal(id, message);
339+
await (await loadSignalSendRuntime()).sendMessageSignal(id, message);
333340
},
334341
},
335342
},
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { sendMessageSignal } from "./send.js";

0 commit comments

Comments
 (0)