import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import { getFeatureControls } from './service';
import type { FeatureControlData } from './interface';

const initialState = {
  featureControls: [] as FeatureControlData[],
  status: 'loading',
  error: '',
};

export const fetchFeatureControls = createAsyncThunk('featureControls/fetchFeatureControls', async () => {
  const response = await getFeatureControls();
  return response;
});

const featureControlSlice = createSlice({
  name: 'featureControls',
  initialState,
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchFeatureControls.pending, (state) => {
        state.status = 'loading';
      })
      .addCase(fetchFeatureControls.fulfilled, (state, action) => {
        state.status = 'succeeded';
        state.featureControls = action.payload.data.data;
      })
      .addCase(fetchFeatureControls.rejected, (state, action) => {
        state.status = 'failed';
        state.error = action.error.message ?? 'An error occurred';
      });
  },
});

export default featureControlSlice.reducer;
