diff --git a/spec/unit/room.spec.js b/spec/unit/room.spec.js index be746a237..015bfb48c 100644 --- a/spec/unit/room.spec.js +++ b/spec/unit/room.spec.js @@ -1,5 +1,5 @@ import * as utils from "../test-utils"; -import { EventStatus, MatrixEvent } from "../../src"; +import { DuplicateStrategy, EventStatus, MatrixEvent } from "../../src"; import { EventTimeline } from "../../src/models/event-timeline"; import { RoomState } from "../../src"; import { Room } from "../../src"; @@ -113,7 +113,7 @@ describe("Room", function() { dupe.event.event_id = events[0].getId(); room.addLiveEvents(events); expect(room.timeline[0]).toEqual(events[0]); - room.addLiveEvents([dupe], "replace"); + room.addLiveEvents([dupe], DuplicateStrategy.Replace); expect(room.timeline[0]).toEqual(dupe); }); diff --git a/src/models/event-timeline-set.ts b/src/models/event-timeline-set.ts index aa4d307bc..dfa974267 100644 --- a/src/models/event-timeline-set.ts +++ b/src/models/event-timeline-set.ts @@ -532,7 +532,7 @@ export class EventTimelineSet extends EventEmitter { const timeline = this._eventIdToTimeline[event.getId()]; if (timeline) { - if (duplicateStrategy === "replace") { + if (duplicateStrategy === DuplicateStrategy.Replace) { debuglog("EventTimelineSet.addLiveEvent: replacing duplicate event " + event.getId()); const tlEvents = timeline.getEvents(); @@ -540,7 +540,7 @@ export class EventTimelineSet extends EventEmitter { if (tlEvents[j].getId() === event.getId()) { // still need to set the right metadata on this event if (!roomState) { - timeline.getState(EventTimeline.FORWARDS); + roomState = timeline.getState(EventTimeline.FORWARDS); } EventTimeline.setEventMetadata( event, diff --git a/src/models/room.ts b/src/models/room.ts index f779c32da..d2ea38738 100644 --- a/src/models/room.ts +++ b/src/models/room.ts @@ -20,7 +20,7 @@ limitations under the License. import { EventEmitter } from "events"; -import { EventTimelineSet } from "./event-timeline-set"; +import { EventTimelineSet, DuplicateStrategy } from "./event-timeline-set"; import { EventTimeline } from "./event-timeline"; import { getHttpUriForMxc } from "../content-repo"; import * as utils from "../utils"; @@ -1327,7 +1327,7 @@ export class Room extends EventEmitter { * @fires module:client~MatrixClient#event:"Room.timeline" * @private */ - private addLiveEvent(event: MatrixEvent, duplicateStrategy?: "ignore" | "replace", fromCache = false): void { + private addLiveEvent(event: MatrixEvent, duplicateStrategy?: DuplicateStrategy, fromCache = false): void { if (event.isRedaction()) { const redactId = event.event.redacts; @@ -1713,7 +1713,7 @@ export class Room extends EventEmitter { * @param {boolean} fromCache whether the sync response came from cache * @throws If duplicateStrategy is not falsey, 'replace' or 'ignore'. */ - public addLiveEvents(events: MatrixEvent[], duplicateStrategy?: "replace" | "ignore", fromCache = false): void { + public addLiveEvents(events: MatrixEvent[], duplicateStrategy?: DuplicateStrategy, fromCache = false): void { let i; if (duplicateStrategy && ["replace", "ignore"].indexOf(duplicateStrategy) === -1) { throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");