All files / lib/providers/GameParameter index.tsx

33.33% Statements 3/9
100% Branches 0/0
20% Functions 1/5
25% Lines 2/8

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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45                    1x                           15x                                        
import React from 'react';
import { ActionType } from '@uniquegood/realworld-web-interface/lib/models/game/Action';
import { Expression, ValuableExpressionType } from '@uniquegood/realworld-web-interface/lib/models/game/Expression';
 
interface ParameterMap {
  [key: string]: Partial<{
    [key in ActionType]: Record<string, Expression<ValuableExpressionType>>;
  }>;
}
 
const GameParameterContext = React.createContext<{
  parameterMapRef: React.MutableRefObject<ParameterMap>;
  resetParameterMap: (key: string) => unknown;
}>({
  parameterMapRef: { current: {} },
  resetParameterMap: () => {
    // mock
  }
});
 
interface GameParameterContextProps {
  children: JSX.Element | JSX.Element[];
}
 
export const useGameParameterContext = () => React.useContext(GameParameterContext);
 
function GameParameterProvider({ children }: GameParameterContextProps): JSX.Element {
  const parameterMapRef = React.useRef<ParameterMap>({});
  const resetParameterMap = React.useCallback((key: string) => {
    parameterMapRef.current[key] = {};
  }, []);
 
  const value = React.useMemo(
    () => ({
      parameterMapRef,
      resetParameterMap
    }),
    [resetParameterMap]
  );
 
  return <GameParameterContext.Provider value={value}>{children}</GameParameterContext.Provider>;
}
 
export { GameParameterContext, GameParameterProvider };