Skip to content

Commit c128e0b

Browse files
authored
Fix duplication after message edition (#194)
1 parent df24975 commit c128e0b

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

packages/jupyterlab-chat/src/model.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,13 @@ export class LabChatModel extends ChatModel implements DocumentRegistry.IModel {
133133
// nothing to do
134134
}
135135

136-
messagesInserted(index: number, messages: IChatMessage[]): void {
136+
async messagesInserted(
137+
index: number,
138+
messages: IChatMessage[]
139+
): Promise<void> {
137140
// Ensure the chat has an ID before inserting the messages, to properly catch the
138141
// unread messages (the last read message is saved using the chat ID).
139-
this._ready.promise.then(() => {
142+
return this._ready.promise.then(() => {
140143
super.messagesInserted(index, messages);
141144
});
142145
}
@@ -269,11 +272,11 @@ export class LabChatModel extends ChatModel implements DocumentRegistry.IModel {
269272
this._timeoutWriting = null;
270273
}
271274

272-
private _onchange = (_: YChat, changes: IChatChanges) => {
275+
private _onchange = async (_: YChat, changes: IChatChanges) => {
273276
if (changes.messageChanges) {
274277
const msgDelta = changes.messageChanges;
275278
let index = 0;
276-
msgDelta.forEach(delta => {
279+
for (const delta of msgDelta) {
277280
if (delta.retain) {
278281
index += delta.retain;
279282
} else if (delta.insert) {
@@ -308,12 +311,12 @@ export class LabChatModel extends ChatModel implements DocumentRegistry.IModel {
308311

309312
return msg;
310313
});
311-
this.messagesInserted(index, messages);
314+
await this.messagesInserted(index, messages);
312315
index += messages.length;
313316
} else if (delta.delete) {
314317
this.messagesDeleted(index, delta.delete);
315318
}
316-
});
319+
}
317320
}
318321

319322
if (changes.metadataChanges) {

0 commit comments

Comments
 (0)