Add event emitter to datasource

Reviewed By: LukeDefeo

Differential Revision: D51026560

fbshipit-source-id: 8348c6765633d7eecf0d1c80bc5bbd5af8130298
This commit is contained in:
Andrey Goncharov
2023-11-08 02:08:25 -08:00
committed by Facebook GitHub Bot
parent 3536ffe737
commit da5856138d

View File

@@ -11,6 +11,7 @@ import sortedIndexBy from 'lodash/sortedIndexBy';
import sortedLastIndexBy from 'lodash/sortedLastIndexBy';
import property from 'lodash/property';
import lodashSort from 'lodash/sortBy';
import EventEmitter from 'eventemitter3';
// If the dataSource becomes to large, after how many records will we start to drop items?
const dropFactor = 0.1;
@@ -180,6 +181,8 @@ export class DataSource<T extends any, KeyType = never> {
[viewId: string]: DataSourceView<T, KeyType>;
};
public readonly outputEventEmitter = new EventEmitter();
constructor(
keyAttribute: keyof T | undefined,
secondaryIndices: IndexDefinition<T>[] = [],
@@ -550,6 +553,7 @@ export class DataSource<T extends any, KeyType = never> {
Object.entries(this.additionalViews).forEach(([, dataView]) => {
dataView.processEvent(event);
});
this.outputEventEmitter.emit(event.type, event);
}
private storeSecondaryIndices(value: T) {