import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import {
  CanModuleType,
  Accessory,
  Wire,
  WireAccessory,
  DeviceModel,
  TelematicsBox,
} from '@/models/teltoinstall/_index';

interface ReferenceState {
  canModuleTypes: CanModuleType[];
  accessories: Accessory[];
  wires: Wire[];
  wireAccessories: WireAccessory[];
  deviceModels: DeviceModel[];
  telematicsBoxes: TelematicsBox[];
  loaded: boolean;
}

const initialState: ReferenceState = {
  canModuleTypes: [],
  accessories: [],
  wires: [],
  wireAccessories: [],
  deviceModels: [],
  telematicsBoxes: [],
  loaded: false,
};

const referenceSlice = createSlice({
  name: 'reference',
  initialState,
  reducers: {
    setReferenceData(state, action: PayloadAction<Omit<ReferenceState, 'loaded'>>) {
      Object.assign(state, action.payload, { loaded: true });
    },
  },
});

export const { setReferenceData } = referenceSlice.actions;
export default referenceSlice.reducer;
