import { useReducer } from "react"; import { Model } from "../../Model"; import { reducer, InitialState, ActionType } from "../ReducerUtils"; import { Filter } from "../../filters"; export const useRemove = (model: Model) => { const [state, dispatch] = useReducer(reducer, InitialState); const remove = async (filter: Filter) => { if (state.loading) { return; } dispatch({ type: ActionType.INITIATE_REQUEST }); try { const results = await model.remove(filter); dispatch({ type: ActionType.REQUEST_COMPLETE, data: results }); return results; } catch (error) { dispatch({ type: ActionType.REQUEST_COMPLETE, error }); } }; return { ...state, remove }; };