All files useActions.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 4/4
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26              27x 27x 27x   8x   11x 13x 13x 13x   11x              
import { useMemo } from 'react';
import { useRegistry } from './useRegistry';
import { AC } from './types';
 
export function useActions<T extends { [x: string]: AC }>(
  actionCreators: T
): T {
  const registry = useRegistry();
  const names = Object.keys(actionCreators);
  return useMemo(
    () =>
      names.reduce(
        (mapped: any, key) => {
          mapped[key] = (...args: any[]) => {
            const action = actionCreators[key](...args);
            registry.dispatch(action);
            return action;
          };
          return mapped;
        },
        {} as T
      ),
    names
  );
}