import {createPageContext} from '@hooks';
import {Dispatch, useReducer} from 'react';
import {createContext} from 'use-context-selector';

// #region 查询条件
type State = {
  name: string;
};

type Action = {type: 'SEARCH', payload: State} | {type: 'RESET'};

function reducer(state: State, action: Action): State {
  const {type} = action;

  switch (type) {
    case 'SEARCH': {
      return action.payload;
    }
    case 'RESET':
      return {name: ''};
    default:
      return state;
  }
}

function initState(name?: string): State {
  return {name: name ?? ''};
}

export function useContextReducer(init?: string) {
  return useReducer(reducer, initState(init));
}

export const context = createContext<[State, Dispatch<Action>]>([initState(), () => null]);
// #endregion

/** 页码管理 */
export const pageContext = createPageContext();

