// Copyright (c) 2019 Gonzalo Müller Bravo. import React, { Context, createContext, ReactElement, ReactNode } from 'react' import ReducerContext, { ReducerContextDefaultValue, useReducerDispatcher, useReducerState, useReducerContext, ReducerContextInterface, Dispatcher } from '../../../main/js/ReducerContext' interface TestState { lastAction: number; } const initialState: TestState = { lastAction: 0 } function reduce(prevState: TestState, action: string): TestState { switch (action) { case 'ACTION1': return { lastAction: 1 } default: return prevState } } const testReducerContext: Context> = createContext(null) function TestReducerContext({ children }: {children: ReactNode}): ReactElement { return ( {children} ) } function TestReducerMainHook(): ReactElement { const { state, dispatch }: ReducerContextInterface = useReducerContext(testReducerContext) return ( ) } function TestReducerStateHook(): ReactElement { const theState: TestState = useReducerState(testReducerContext) return ( ) } function TestReducerDispatcherHook(): ReactElement { const theDispatcher: Dispatcher = useReducerDispatcher(testReducerContext) return ( ) }