UNPKG

@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
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 }); }; }