1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-05 17:02:07 +03:00

Always add pending relation events to the timeline sets directly

This special cases pending relation events to go directly to the timeline sets
and ignores the `pendingEventOrdering` option. This feels a bit strange in the
code, so we should revisit this choice when we stabilized relation support.
This commit is contained in:
J. Ryan Stinnett
2019-05-10 16:33:49 +01:00
parent 8822d255b3
commit 00851df25c
2 changed files with 15 additions and 1 deletions

View File

@@ -730,6 +730,16 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// successfully sent. // successfully sent.
this.status = null; this.status = null;
}, },
/**
* Get whether the event is a relation event.
* @return {boolean}
*/
isRelation() {
const content = this.getContent();
const relation = content && content["m.relates_to"];
return relation && relation.rel_type && relation.event_id;
},
}); });

View File

@@ -1101,7 +1101,11 @@ Room.prototype.addPendingEvent = function(event, txnId) {
this._txnToEvent[txnId] = event; this._txnToEvent[txnId] = event;
if (this._opts.pendingEventOrdering == "detached") { // TODO: We currently ignore `pendingEventOrdering` for relation events.
// They are aggregated by the timeline set, and we want that to happen right
// away for easy local echo, but it complicates what should be a general
// code path by branching on the event type.
if (!event.isRelation() && this._opts.pendingEventOrdering == "detached") {
if (this._pendingEventList.some((e) => e.status === EventStatus.NOT_SENT)) { if (this._pendingEventList.some((e) => e.status === EventStatus.NOT_SENT)) {
console.warn("Setting event as NOT_SENT due to messages in the same state"); console.warn("Setting event as NOT_SENT due to messages in the same state");
event.status = EventStatus.NOT_SENT; event.status = EventStatus.NOT_SENT;