mirror of https://github.com/vector-im/riot-web
EventIndex: Move the event listener registration into the EventIndex class.
parent
d2a9918359
commit
6017473caf
|
@ -31,11 +31,45 @@ export default class EventIndex {
|
|||
this._eventsPerCrawl = 100;
|
||||
this._crawler = null;
|
||||
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() {
|
||||
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) {
|
||||
|
@ -343,7 +377,9 @@ export default class EventIndex {
|
|||
console.log("EventIndex: Stopping crawler function");
|
||||
}
|
||||
|
||||
async onLimitedTimeline(room) {
|
||||
async onTimelineReset(room) {
|
||||
if (room === null) return;
|
||||
|
||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||
if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) return;
|
||||
|
||||
|
@ -377,6 +413,7 @@ export default class EventIndex {
|
|||
|
||||
async close() {
|
||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||
this.removeListeners();
|
||||
this.stopCrawler();
|
||||
return indexManager.closeEventIndex();
|
||||
}
|
||||
|
|
|
@ -97,10 +97,9 @@ class EventIndexPeg {
|
|||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||
|
||||
if (indexManager !== null) {
|
||||
this.stop();
|
||||
this.unset();
|
||||
console.log("EventIndex: Deleting event index.");
|
||||
await indexManager.deleteEventIndex();
|
||||
this.index = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ import Analytics from "../../Analytics";
|
|||
import { DecryptionFailureTracker } from "../../DecryptionFailureTracker";
|
||||
import MatrixClientPeg from "../../MatrixClientPeg";
|
||||
import PlatformPeg from "../../PlatformPeg";
|
||||
import EventIndexPeg from "../../EventIndexPeg";
|
||||
import SdkConfig from "../../SdkConfig";
|
||||
import * as RoomListSorter from "../../RoomListSorter";
|
||||
import dis from "../../dispatcher";
|
||||
|
@ -1288,31 +1287,6 @@ export default createReactClass({
|
|||
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) {
|
||||
// LifecycleStore and others cannot directly subscribe to matrix client for
|
||||
// events because flux only allows store state changes during flux dispatches.
|
||||
|
|
Loading…
Reference in New Issue