Skip to content

Commit aabc291

Browse files
committed
fix(outbound): restrict sendPayload fast path to native v2 adapters
1 parent 2b34946 commit aabc291

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/infra/outbound/deliver.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,19 +200,25 @@ function createPluginHandler(
200200
mediaUrl,
201201
payload: { text: caption, mediaUrl, mediaUrls: [mediaUrl] },
202202
});
203+
// Only enable sendPayload for native v2 adapters. Inferred sendFinal (from
204+
// v1 sendText/sendMedia) doesn't handle multi-media fan-out or text chunking,
205+
// so letting it take the sendPayload fast path would drop attachments and skip
206+
// chunking for channelData payloads.
207+
const isNativeV2 = normalized.contract === "v2";
203208
return {
204209
chunker,
205210
chunkerMode,
206211
textChunkLimit: outbound.textChunkLimit,
207-
sendPayload: outbound.sendFinal
208-
? async (payload, overrides) =>
209-
outbound.sendFinal({
210-
...resolveCtx(overrides),
211-
text: payload.text ?? "",
212-
mediaUrl: payload.mediaUrl,
213-
payload,
214-
})
215-
: undefined,
212+
sendPayload:
213+
isNativeV2 && outbound.sendFinal
214+
? async (payload, overrides) =>
215+
outbound.sendFinal({
216+
...resolveCtx(overrides),
217+
text: payload.text ?? "",
218+
mediaUrl: payload.mediaUrl,
219+
payload,
220+
})
221+
: undefined,
216222
sendText: async (text, overrides) => sendText(text, overrides),
217223
sendMedia: async (caption, mediaUrl, overrides) => sendMedia(caption, mediaUrl, overrides),
218224
};

0 commit comments

Comments
 (0)