@segment/analytics-react-native
Version:
The hassle-free way to add Segment analytics to your React-Native app.
36 lines (28 loc) • 1.08 kB
text/typescript
import type { SegmentEvent } from '../types';
import { createMockStoreGetter } from './mockSegmentStore';
import { createCallbackManager } from './utils';
export class MockEventStore {
private initialData: SegmentEvent[] = [];
private events: SegmentEvent[] = [];
private callbackManager = createCallbackManager<{ events: SegmentEvent[] }>();
constructor(initialData?: SegmentEvent[]) {
this.events = [...(initialData ?? [])];
this.initialData = JSON.parse(
JSON.stringify(initialData ?? [])
) as SegmentEvent[];
}
reset = () => {
this.events = JSON.parse(
JSON.stringify(this.initialData)
) as SegmentEvent[];
};
getState = createMockStoreGetter(() => ({ events: this.events }));
subscribe = (callback: (value: { events: SegmentEvent[] }) => void) =>
this.callbackManager.register(callback);
dispatch = (
callback: (value: { events: SegmentEvent[] }) => { events: SegmentEvent[] }
) => {
this.events = callback({ events: this.events }).events;
this.callbackManager.run({ events: this.events });
};
}