Merge pull request #321 from vector-im/bwindels/fix-remote-echo-race
Fix local echo reappearing after remote echo arrived
This commit is contained in:
commit
dce13f67dd
4 changed files with 9 additions and 6 deletions
|
@ -82,12 +82,13 @@ function showItemDetails(item, parent, itemNode) {
|
|||
const parentOffset = itemStart(parent) ? `${itemStart(item) - itemStart(parent)}ms` : "none";
|
||||
const expandButton = t.button("Expand recursively");
|
||||
expandButton.addEventListener("click", () => expandResursively(itemNode.parentElement.parentElement));
|
||||
const start = itemStart(item);
|
||||
const aside = t.aside([
|
||||
t.h3(itemCaption(item)),
|
||||
t.p([t.strong("Log level: "), logLevels[itemLevel(item)]]),
|
||||
t.p([t.strong("Error: "), itemError(item) ? `${itemError(item).name} ${itemError(item).stack}` : "none"]),
|
||||
t.p([t.strong("Parent offset: "), parentOffset]),
|
||||
t.p([t.strong("Start: "), new Date(itemStart(item)).toString()]),
|
||||
t.p([t.strong("Start: "), new Date(start).toString(), ` (${start})`]),
|
||||
t.p([t.strong("Duration: "), `${itemDuration(item)}ms`]),
|
||||
t.p([t.strong("Child count: "), itemChildren(item) ? `${itemChildren(item).length}` : "none"]),
|
||||
t.p([t.strong("Forced finish: "), (itemForcedFinish(item) || false) + ""]),
|
||||
|
|
|
@ -36,7 +36,7 @@ export class SendQueue {
|
|||
const pendingEvent = new PendingEvent({
|
||||
data,
|
||||
remove: () => this._removeEvent(pendingEvent),
|
||||
emitUpdate: () => this._pendingEvents.set(pendingEvent),
|
||||
emitUpdate: () => this._pendingEvents.update(pendingEvent),
|
||||
attachments
|
||||
});
|
||||
return pendingEvent;
|
||||
|
@ -118,7 +118,7 @@ export class SendQueue {
|
|||
}
|
||||
if (idx !== -1) {
|
||||
const pendingEvent = this._pendingEvents.get(idx);
|
||||
parentLog.log({l: "removeRemoteEcho", id: pendingEvent.remoteId});
|
||||
parentLog.log({l: "removeRemoteEcho", queueIndex: pendingEvent.queueIndex, remoteId: event.event_id, txnId});
|
||||
txn.pendingEvents.remove(pendingEvent.roomId, pendingEvent.queueIndex);
|
||||
removed.push(pendingEvent);
|
||||
}
|
||||
|
|
|
@ -76,7 +76,9 @@ export class Timeline {
|
|||
|
||||
replaceEntries(entries) {
|
||||
for (const entry of entries) {
|
||||
this._remoteEntries.replace(entry);
|
||||
// this will use the comparator and thus
|
||||
// check for equality using the compare method in BaseEntry
|
||||
this._remoteEntries.update(entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,11 +41,11 @@ export class SortedArray extends BaseObservableList {
|
|||
}
|
||||
}
|
||||
|
||||
replace(item) {
|
||||
update(item, updateParams = null) {
|
||||
const idx = this.indexOf(item);
|
||||
if (idx !== -1) {
|
||||
this._items[idx] = item;
|
||||
this.emitUpdate(idx, item, null);
|
||||
this.emitUpdate(idx, item, updateParams);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue