import { MonthYearValue } from "@/components/ui/month-year-select";
import { createSlice, PayloadAction } from "@reduxjs/toolkit";

interface FilterInitialState {
  myMis?: {};
  misAction?: { period?: MonthYearValue; year?: string; search?: string };
}

type SaveFilterPayload<K extends keyof FilterInitialState> = {
  moduleName: K;
  data: FilterInitialState[K];
};

const initialState: FilterInitialState = {};

export const filterSlice = createSlice({
  name: "filter",
  initialState,
  reducers: {
    saveFilter: <K extends keyof FilterInitialState>(
      state: FilterInitialState,
      action: PayloadAction<SaveFilterPayload<K>>,
    ) => {
      const { moduleName, data } = action.payload;
      state[moduleName] = data;
    },

    removeFilter: (state, action: PayloadAction<keyof FilterInitialState>) => {
      delete state[action.payload];
    },
  },
});

export const { saveFilter, removeFilter } = filterSlice.actions;
export default filterSlice.reducer;
