import { createAction, createReducer } from '@reduxjs/toolkit'; import { GetBankAccountsResponse } from '@interfaces'; import { addBankAccount, fetchBankAccounts } from './thunk'; export interface AddBankDetailsState { isLoading: boolean; error: string | null; success: boolean; bankAccounts: GetBankAccountsResponse | null; } const initialState: AddBankDetailsState = { isLoading: false, error: null, success: false, bankAccounts: null, }; export const resetAddBankState = createAction('addBankDetails/reset'); export const addBankDetailsReducer = createReducer(initialState, builder => builder .addCase(addBankAccount.pending, state => { state.isLoading = true; state.error = null; state.success = false; }) .addCase(addBankAccount.fulfilled, (state, action) => { state.isLoading = false; state.success = true; state.bankAccounts = action.payload; }) .addCase(addBankAccount.rejected, (state, action) => { state.isLoading = false; state.error = action.payload as string; state.success = false; }) .addCase(fetchBankAccounts.pending, state => { state.isLoading = true; state.error = null; }) .addCase(fetchBankAccounts.fulfilled, (state, action) => { state.isLoading = false; state.bankAccounts = action.payload; }) .addCase(fetchBankAccounts.rejected, (state, action) => { state.isLoading = false; state.error = action.payload as string; }) .addCase(resetAddBankState, state => { state.isLoading = false; state.error = null; state.success = false; }), );