vector-im-hydrogen-web/src/matrix/room/room.js

37 lines
956 B
JavaScript

import RoomSummary from "./summary.js";
import RoomPersister from "./persister.js";
import EventEmitter from "../../EventEmitter.js";
export default class Room extends EventEmitter {
constructor(roomId, storage, emitCollectionChange) {
super();
this._roomId = roomId;
this._storage = storage;
this._summary = new RoomSummary(roomId);
this._persister = new RoomPersister(roomId);
this._emitCollectionChange = emitCollectionChange;
}
async applySync(roomResponse, membership, txn) {
const changed = this._summary.applySync(roomResponse, membership, txn);
this._persister.persistSync(roomResponse, txn);
if (changed) {
this.emit("change");
(this._emitCollectionChange)(this);
}
}
load(summary, txn) {
this._summary.load(summary);
return this._persister.load(txn);
}
get name() {
return this._summary.name;
}
get id() {
return this._roomId;
}
}