Skip to content

Commit 11ad19e

Browse files
committed
fix(sds): emit empty array when no missing messages detected
1 parent 5850253 commit 11ad19e

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

packages/sds/src/message_channel/message_channel.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ describe("MessageChannel", function () {
282282
// and notInHistory should still be in the outgoing buffer
283283
const outgoingBuffer = (channelA as any).outgoingBuffer as Message[];
284284
expect(outgoingBuffer.length).to.equal(1);
285+
console.log(outgoingBuffer);
286+
console.log(notInHistory);
285287
expect(outgoingBuffer[0].messageId).to.equal(notInHistory!.messageId);
286288
});
287289

packages/sds/src/message_channel/message_channel.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,22 +249,29 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
249249
}
250250

251251
public _receiveMessage(message: Message): void {
252-
if (this.timeReceived.has(message.messageId)) {
252+
if (
253+
message.content &&
254+
message.content.length > 0 &&
255+
this.timeReceived.has(message.messageId)
256+
) {
253257
// Received a duplicate message
254258
return;
255259
}
256260

257261
if (!message.lamportTimestamp) {
258262
// Messages with no timestamp are ephemeral messages and should be delivered immediately
263+
this.deliverMessage(message);
264+
return;
265+
}
266+
if (message.content?.length === 0) {
259267
this.safeDispatchEvent(MessageChannelEvent.SyncReceived, {
260268
detail: message
261269
});
262-
this.deliverMessage(message);
263-
return;
270+
} else {
271+
this.safeDispatchEvent(MessageChannelEvent.MessageReceived, {
272+
detail: message
273+
});
264274
}
265-
this.safeDispatchEvent(MessageChannelEvent.MessageReceived, {
266-
detail: message
267-
});
268275
// review ack status
269276
this.reviewAckStatus(message);
270277
// add to bloom filter (skip for messages with empty content)
@@ -347,11 +354,11 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
347354
);
348355
// Update the incoming buffer to only include messages with no missing dependencies
349356
this.incomingBuffer = buffer;
350-
if (missing.size > 0) {
351-
this.safeDispatchEvent(MessageChannelEvent.MissedMessages, {
352-
detail: Array.from(missing)
353-
});
354-
}
357+
358+
this.safeDispatchEvent(MessageChannelEvent.MissedMessages, {
359+
detail: Array.from(missing)
360+
});
361+
355362
return Array.from(missing);
356363
}
357364

0 commit comments

Comments
 (0)