From 57e02c608fd701b10c1945191f74989cf5359531 Mon Sep 17 00:00:00 2001 From: echicken <echicken@bbs.electronicchicken.com> Date: Mon, 29 Apr 2024 03:38:11 +0000 Subject: [PATCH] Send text in chunks if necessary --- src/lib/device.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/device.ts b/src/lib/device.ts index e71125b..9ede783 100644 --- a/src/lib/device.ts +++ b/src/lib/device.ts @@ -396,12 +396,16 @@ export default abstract class Device extends js.global.EventEmitter { ackHandler, replyId, hopLimit, - }: ITextMessageParams): boolean { - // @ts-expect-error It's fucken ambient okay? - const enc = new TextEncoder(); - const payload = enc.encode(text); - if (payload.length > MAX_PAYLOAD) this.error(`sendText: payload length ${payload.length} exceeds maximum (${MAX_PAYLOAD})`); - return this.sendPacket({ payload, portNum: protobuf.Portnums.PortNum.TEXT_MESSAGE_APP, to, channel, wantAck, ackHandler, replyId, hopLimit }); + }: ITextMessageParams): void { + const msgs = chunkText(text); + for (const msg of msgs) { + // @ts-expect-error It's fucken ambient okay? + const enc = new TextEncoder(); + const payload = enc.encode(msg); + if (payload.length > MAX_PAYLOAD) this.error(`sendText: payload length ${payload.length} exceeds maximum (${MAX_PAYLOAD})`); + const res = this.sendPacket({ payload, portNum: protobuf.Portnums.PortNum.TEXT_MESSAGE_APP, to, channel, wantAck, ackHandler, replyId, hopLimit }); + if (!res) this.error(`failed to send text message`); + } } /** -- GitLab