limitMessageRateEpic.ts 971 B

12345678910111213141516171819202122232425
  1. import { Epic } from 'redux-observable';
  2. import { map, throttleTime } from 'rxjs/operators';
  3. import { LoadingState } from '@grafana/ui';
  4. import { StoreState } from 'app/types';
  5. import { ActionOf } from '../../../../core/redux/actionCreatorFactory';
  6. import { limitMessageRatePayloadAction, LimitMessageRatePayload, processQueryResultsAction } from '../actionTypes';
  7. import { EpicDependencies } from 'app/store/configureStore';
  8. export const limitMessageRateEpic: Epic<ActionOf<any>, ActionOf<any>, StoreState, EpicDependencies> = action$ => {
  9. return action$.ofType(limitMessageRatePayloadAction.type).pipe(
  10. throttleTime(1),
  11. map((action: ActionOf<LimitMessageRatePayload>) => {
  12. const { exploreId, series, datasourceId } = action.payload;
  13. return processQueryResultsAction({
  14. exploreId,
  15. latency: 0,
  16. datasourceId,
  17. loadingState: LoadingState.Streaming,
  18. series: null,
  19. delta: series,
  20. });
  21. })
  22. );
  23. };