diff --git a/lib/http-api.js b/lib/http-api.js index edddab27e..42db907f3 100644 --- a/lib/http-api.js +++ b/lib/http-api.js @@ -21,7 +21,7 @@ module.exports.PREFIX_V1 = "/_matrix/client/api/v1"; * A constant representing the URI path for version 2 alpha of the Client-Server * HTTP API. */ -module.exports.PREFIX_V2_ALPHA_PREFIX = "/_matrix/client/v2_alpha"; +module.exports.PREFIX_V2_ALPHA = "/_matrix/client/v2_alpha"; /** * Construct a MatrixHttpApi. diff --git a/lib/models/room.js b/lib/models/room.js index 8d82c5585..1a682a62a 100644 --- a/lib/models/room.js +++ b/lib/models/room.js @@ -85,25 +85,9 @@ utils.inherits(Room, EventEmitter); Room.prototype.addEventsToTimeline = function(events, toStartOfTimeline) { var stateContext = toStartOfTimeline ? this.oldState : this.currentState; for (var i = 0; i < events.length; i++) { - // set sender and target properties - events[i].sender = stateContext.getSentinelMember( - events[i].getSender() - ); - if (events[i].getType() === "m.room.member") { - events[i].target = stateContext.getSentinelMember( - events[i].getStateKey() - ); - } - + setEventMetadata(events[i], stateContext, toStartOfTimeline); // modify state if (events[i].isState()) { - // room state has no concept of 'old' or 'current', but we want the - // room state to regress back to previous values if toStartOfTimeline - // is set, which means inspecting prev_content if it exists. This - // is done by toggling the forwardLooking flag. - if (toStartOfTimeline) { - events[i].forwardLooking = false; - } stateContext.setStateEvents([events[i]]); } // TODO: pass through filter to see if this should be added to the timeline. @@ -146,6 +130,12 @@ Room.prototype.addEvents = function(events, duplicateStrategy) { for (var j = 0; j < this.timeline.length; j++) { if (this.timeline[j].getId() === events[i].getId()) { if (duplicateStrategy === "replace") { + // still need to set the right metadata on this event + setEventMetadata( + events[i], + this.currentState, + false + ); this.timeline[j] = events[i]; // skip the insert so we don't add this event twice. // Don't break in case we replace multiple events. @@ -187,6 +177,27 @@ Room.prototype.recalculate = function(userId) { } }; +function setEventMetadata(event, stateContext, toStartOfTimeline) { + // set sender and target properties + event.sender = stateContext.getSentinelMember( + event.getSender() + ); + if (event.getType() === "m.room.member") { + event.target = stateContext.getSentinelMember( + event.getStateKey() + ); + } + if (event.isState()) { + // room state has no concept of 'old' or 'current', but we want the + // room state to regress back to previous values if toStartOfTimeline + // is set, which means inspecting prev_content if it exists. This + // is done by toggling the forwardLooking flag. + if (toStartOfTimeline) { + event.forwardLooking = false; + } + } +} + /** * This is an internal method. Calculates the name of the room from the current * room state.