import type { AppStartListening } from '@/redux/store';
import { Action, createListenerMiddleware, isRejected } from '@reduxjs/toolkit';
import { handleError } from '@/utils/error-report/errorReporting';

export const errorListenerMiddleware = createListenerMiddleware();

const startListening = errorListenerMiddleware.startListening as AppStartListening;

export const errorMiddlewareListener = async (action: Action): Promise<void> => {
  if (isRejected(action)) {
    handleError(action.error);
  }
};

startListening({
  matcher: isRejected,
  effect: errorMiddlewareListener,
});