mirror of
https://github.com/element-hq/element-web
synced 2024-11-23 17:56:01 +03:00
EventIndex: Move the event listener registration into the EventIndex class.
This commit is contained in:
parent
d2a9918359
commit
6017473caf
3 changed files with 40 additions and 30 deletions
|
@ -31,11 +31,45 @@ export default class EventIndex {
|
||||||
this._eventsPerCrawl = 100;
|
this._eventsPerCrawl = 100;
|
||||||
this._crawler = null;
|
this._crawler = null;
|
||||||
this.liveEventsForIndex = new Set();
|
this.liveEventsForIndex = new Set();
|
||||||
|
|
||||||
|
this.boundOnSync = async (state, prevState, data) => {
|
||||||
|
await this.onSync(state, prevState, data);
|
||||||
|
};
|
||||||
|
this.boundOnRoomTimeline = async ( ev, room, toStartOfTimeline, removed,
|
||||||
|
data) => {
|
||||||
|
await this.onRoomTimeline(ev, room, toStartOfTimeline, removed, data);
|
||||||
|
};
|
||||||
|
this.boundOnEventDecrypted = async (ev, err) => {
|
||||||
|
await this.onEventDecrypted(ev, err);
|
||||||
|
};
|
||||||
|
this.boundOnTimelineReset = async (room, timelineSet,
|
||||||
|
resetAllTimelines) => await this.onTimelineReset(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||||
return indexManager.initEventIndex();
|
await indexManager.initEventIndex();
|
||||||
|
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
registerListeners() {
|
||||||
|
const client = MatrixClientPeg.get();
|
||||||
|
|
||||||
|
client.on('sync', this.boundOnSync);
|
||||||
|
client.on('Room.timeline', this.boundOnRoomTimeline);
|
||||||
|
client.on('Event.decrypted', this.boundOnEventDecrypted);
|
||||||
|
client.on('Room.timelineReset', this.boundOnTimelineReset);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeListeners() {
|
||||||
|
const client = MatrixClientPeg.get();
|
||||||
|
if (client === null) return;
|
||||||
|
|
||||||
|
client.removeListener('sync', this.boundOnSync);
|
||||||
|
client.removeListener('Room.timeline', this.boundOnRoomTimeline);
|
||||||
|
client.removeListener('Event.decrypted', this.boundOnEventDecrypted);
|
||||||
|
client.removeListener('Room.timelineReset', this.boundOnTimelineReset);
|
||||||
}
|
}
|
||||||
|
|
||||||
async onSync(state, prevState, data) {
|
async onSync(state, prevState, data) {
|
||||||
|
@ -343,7 +377,9 @@ export default class EventIndex {
|
||||||
console.log("EventIndex: Stopping crawler function");
|
console.log("EventIndex: Stopping crawler function");
|
||||||
}
|
}
|
||||||
|
|
||||||
async onLimitedTimeline(room) {
|
async onTimelineReset(room) {
|
||||||
|
if (room === null) return;
|
||||||
|
|
||||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||||
if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) return;
|
if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) return;
|
||||||
|
|
||||||
|
@ -377,6 +413,7 @@ export default class EventIndex {
|
||||||
|
|
||||||
async close() {
|
async close() {
|
||||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||||
|
this.removeListeners();
|
||||||
this.stopCrawler();
|
this.stopCrawler();
|
||||||
return indexManager.closeEventIndex();
|
return indexManager.closeEventIndex();
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,10 +97,9 @@ class EventIndexPeg {
|
||||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||||
|
|
||||||
if (indexManager !== null) {
|
if (indexManager !== null) {
|
||||||
this.stop();
|
this.unset();
|
||||||
console.log("EventIndex: Deleting event index.");
|
console.log("EventIndex: Deleting event index.");
|
||||||
await indexManager.deleteEventIndex();
|
await indexManager.deleteEventIndex();
|
||||||
this.index = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,6 @@ import Analytics from "../../Analytics";
|
||||||
import { DecryptionFailureTracker } from "../../DecryptionFailureTracker";
|
import { DecryptionFailureTracker } from "../../DecryptionFailureTracker";
|
||||||
import MatrixClientPeg from "../../MatrixClientPeg";
|
import MatrixClientPeg from "../../MatrixClientPeg";
|
||||||
import PlatformPeg from "../../PlatformPeg";
|
import PlatformPeg from "../../PlatformPeg";
|
||||||
import EventIndexPeg from "../../EventIndexPeg";
|
|
||||||
import SdkConfig from "../../SdkConfig";
|
import SdkConfig from "../../SdkConfig";
|
||||||
import * as RoomListSorter from "../../RoomListSorter";
|
import * as RoomListSorter from "../../RoomListSorter";
|
||||||
import dis from "../../dispatcher";
|
import dis from "../../dispatcher";
|
||||||
|
@ -1288,31 +1287,6 @@ export default createReactClass({
|
||||||
return self._loggedInView.child.canResetTimelineInRoom(roomId);
|
return self._loggedInView.child.canResetTimelineInRoom(roomId);
|
||||||
});
|
});
|
||||||
|
|
||||||
cli.on('sync', async (state, prevState, data) => {
|
|
||||||
const eventIndex = EventIndexPeg.get();
|
|
||||||
if (eventIndex === null) return;
|
|
||||||
await eventIndex.onSync(state, prevState, data);
|
|
||||||
});
|
|
||||||
|
|
||||||
cli.on("Room.timeline", async (ev, room, toStartOfTimeline, removed, data) => {
|
|
||||||
const eventIndex = EventIndexPeg.get();
|
|
||||||
if (eventIndex === null) return;
|
|
||||||
await eventIndex.onRoomTimeline(ev, room, toStartOfTimeline, removed, data);
|
|
||||||
});
|
|
||||||
|
|
||||||
cli.on("Event.decrypted", async (ev, err) => {
|
|
||||||
const eventIndex = EventIndexPeg.get();
|
|
||||||
if (eventIndex === null) return;
|
|
||||||
await eventIndex.onEventDecrypted(ev, err);
|
|
||||||
});
|
|
||||||
|
|
||||||
cli.on("Room.timelineReset", async (room, timelineSet, resetAllTimelines) => {
|
|
||||||
const eventIndex = EventIndexPeg.get();
|
|
||||||
if (eventIndex === null) return;
|
|
||||||
if (room === null) return;
|
|
||||||
await eventIndex.onLimitedTimeline(room);
|
|
||||||
});
|
|
||||||
|
|
||||||
cli.on('sync', function(state, prevState, data) {
|
cli.on('sync', function(state, prevState, data) {
|
||||||
// LifecycleStore and others cannot directly subscribe to matrix client for
|
// LifecycleStore and others cannot directly subscribe to matrix client for
|
||||||
// events because flux only allows store state changes during flux dispatches.
|
// events because flux only allows store state changes during flux dispatches.
|
||||||
|
|
Loading…
Reference in a new issue