reducers/cashier.js

import { createSlice } from '@reduxjs/toolkit';
import { aGetInitSuccess, aLocationChange, aSetFilterData } from './bonus';

/**
 * @namespace reducer/cashiersReducer
 */
const initialState = {
  cashiers: [],
  lastUserId: '',
  statementTypes: [],
  statements: [],
  lastStatementId: '',
  userId: '',
};

const resetCashier = (state) => {
  state.cashiers = [];
  state.lastUserId = '';
  state.statements = [];
  state.lastStatementId = '';
};

const clearUserId = (state) => {
  state.userId = '';
};

const cashierSlice = createSlice({
  name: 'cashier',
  initialState,
  reducers: {
    aClearUserId: clearUserId,
    aClearFilterData: clearUserId,
    aGetCashierListSuccess: (state, action) => {
      state.cashiers = action.payload.cashiers;
      state.lastUserId = action.payload.lastUserId;
    },
    aGetStatementListSuccess: (state, action) => {
      state.statements = action.payload.statements;
      state.lastStatementId = action.payload.lastStatementId;
    },
    aSetUserId: (state, action) => {
      state.userId = action.payload;
    },
  },
  extraReducers: (builder) => {
    builder.addCase(aGetInitSuccess, (state, action) => {
      state.statementTypes = action.payload.selects.statementTypes;
    });
    builder.addCase(aLocationChange, resetCashier);
    builder.addCase(aSetFilterData, resetCashier);
  },
});

export default cashierSlice.reducer;

export const { aClearUserId, aClearFilterData, aGetCashierListSuccess, aGetStatementListSuccess, aSetUserId } =
  cashierSlice.actions;