mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-24 12:04:57 +01:00
37 lines
956 B
JavaScript
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;
|
|
}
|
|
}
|