import { SliceCaseReducers, ValidateSliceCaseReducers, createSlice, } from '../toolkit/createSlice' import { ActionReducerMapBuilder } from '../toolkit/mapBuilders' import { destroyAction } from '../actions' export const createDestroyableSlice = < T, Reducers extends SliceCaseReducers >({ name = '', initialState, reducers, extraReducers, }: { name: string initialState: T reducers: ValidateSliceCaseReducers extraReducers?: (builder: ActionReducerMapBuilder) => void }) => { return createSlice({ name, initialState, reducers, extraReducers: (builder) => { builder.addCase(destroyAction.type, () => { return initialState }) if (typeof extraReducers === 'function') { extraReducers(builder) } }, }) }