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