Skip to content

Commit

Permalink
Always add pending relation events to the timeline sets directly
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
jryans committed May 10, 2019
1 parent 9cc250b commit 3e02fea
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
10 changes: 10 additions & 0 deletions src/models/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,16 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// successfully sent.
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;
},
});


Expand Down
6 changes: 5 additions & 1 deletion src/models/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -1101,7 +1101,11 @@ Room.prototype.addPendingEvent = function(event, txnId) {

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)) {
console.warn("Setting event as NOT_SENT due to messages in the same state");
event.status = EventStatus.NOT_SENT;
Expand Down

0 comments on commit 3e02fea

Please sign in to comment.