mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-23 03:25:12 +01:00
Merge pull request #240 from vector-im/bwindels/log-open-timeline
Log open timeline, fill gap and clear unread
This commit is contained in:
commit
afc7902324
@ -41,12 +41,12 @@ export class RoomViewModel extends ViewModel {
|
||||
async load() {
|
||||
this._room.on("change", this._onRoomChange);
|
||||
try {
|
||||
const timeline = await this._room.openTimeline();
|
||||
const timelineVM = this.track(new TimelineViewModel(this.childOptions({
|
||||
room: this._room,
|
||||
timeline: this._room.openTimeline(),
|
||||
timeline,
|
||||
ownUserId: this._ownUserId,
|
||||
})));
|
||||
await timelineVM.load();
|
||||
this._timelineVM = timelineVM;
|
||||
this.emitChange("timelineViewModel");
|
||||
} catch (err) {
|
||||
|
@ -40,16 +40,9 @@ export class TimelineViewModel extends ViewModel {
|
||||
super(options);
|
||||
const {room, timeline, ownUserId} = options;
|
||||
this._timeline = this.track(timeline);
|
||||
// once we support sending messages we could do
|
||||
// timeline.entries.concat(timeline.pendingEvents)
|
||||
// for an ObservableList that also contains local echos
|
||||
this._tiles = new TilesCollection(timeline.entries, tilesCreator(this.childOptions({room, ownUserId})));
|
||||
}
|
||||
|
||||
async load() {
|
||||
await this._timeline.load();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {bool} startReached if the start of the timeline was reached
|
||||
*/
|
||||
|
@ -408,7 +408,11 @@ export class Room extends EventEmitter {
|
||||
fillGap(fragmentEntry, amount, log = null) {
|
||||
// TODO move some/all of this out of Room
|
||||
return this._platform.logger.wrapOrRun(log, "fillGap", async log => {
|
||||
log.set("id", this.id);
|
||||
log.set("fragment", fragmentEntry.fragmentId);
|
||||
log.set("dir", fragmentEntry.direction.asApiString());
|
||||
if (fragmentEntry.edgeReached) {
|
||||
log.set("edgeReached", true);
|
||||
return;
|
||||
}
|
||||
const response = await this._hsApi.messages(this._roomId, {
|
||||
@ -544,8 +548,10 @@ export class Room extends EventEmitter {
|
||||
this._emitCollectionChange(this);
|
||||
}
|
||||
|
||||
async clearUnread() {
|
||||
async clearUnread(log = null) {
|
||||
if (this.isUnread || this.notificationCount) {
|
||||
return await this._platform.logger.wrapOrRun(log, "clearUnread", async log => {
|
||||
log.set("id", this.id);
|
||||
const txn = this._storage.readWriteTxn([
|
||||
this._storage.storeNames.roomSummary,
|
||||
]);
|
||||
@ -571,34 +577,38 @@ export class Room extends EventEmitter {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** @public */
|
||||
openTimeline() {
|
||||
openTimeline(log = null) {
|
||||
return this._platform.logger.wrapOrRun(log, "open timeline", async log => {
|
||||
log.set("id", this.id);
|
||||
if (this._timeline) {
|
||||
throw new Error("not dealing with load race here for now");
|
||||
}
|
||||
console.log(`opening the timeline for ${this._roomId}`);
|
||||
this._timeline = new Timeline({
|
||||
roomId: this.id,
|
||||
storage: this._storage,
|
||||
fragmentIdComparer: this._fragmentIdComparer,
|
||||
pendingEvents: this._sendQueue.pendingEvents,
|
||||
closeCallback: () => {
|
||||
console.log(`closing the timeline for ${this._roomId}`);
|
||||
this._timeline = null;
|
||||
if (this._roomEncryption) {
|
||||
this._roomEncryption.notifyTimelineClosed();
|
||||
}
|
||||
},
|
||||
user: this._user,
|
||||
clock: this._platform.clock
|
||||
clock: this._platform.clock,
|
||||
logger: this._platform.logger,
|
||||
});
|
||||
if (this._roomEncryption) {
|
||||
this._timeline.enableEncryption(this._decryptEntries.bind(this, DecryptionSource.Timeline));
|
||||
}
|
||||
await this._timeline.load();
|
||||
return this._timeline;
|
||||
});
|
||||
}
|
||||
|
||||
get mediaRepository() {
|
||||
|
@ -52,7 +52,7 @@ export class SettingsView extends TemplateView {
|
||||
row(vm.i18n`Version`, version),
|
||||
row(vm.i18n`Storage usage`, vm => `${vm.storageUsage} / ${vm.storageQuota}`),
|
||||
row(vm.i18n`Debug logs`, t.button({onClick: () => vm.exportLogs()}, "Export")),
|
||||
t.p(["Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages. For more information, review our ",
|
||||
t.p(["Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited, the usernames of other users and the names of files you send. They do not contain messages. For more information, review our ",
|
||||
t.a({href: "https://element.io/privacy", target: "_blank", rel: "noopener"}, "privacy policy"), "."]),
|
||||
])
|
||||
]);
|
||||
|
Loading…
Reference in New Issue
Block a user