import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { ClaimStakingProps, GetPoolConfigListProps, GetStakingListProps, PoolConfigProps, StakeProps, StakingPoolState, StakingProps, } from './types' export const initialState: StakingPoolState = { loading: { loadingGetStakingList: false, loadingGetPoolConfigList: false, loadingClaimStaking: false, loadingStaking: false, }, stakingList: [] as StakingProps[], poolConfigList: [] as PoolConfigProps[], } export const stakingPoolSlice = createSlice({ name: 'stakingPool', initialState, reducers: { save(state, action: PayloadAction) { const { payload } = action return { ...state, ...payload, } }, saveLoading(state, action: PayloadAction) { const { payload } = action state.loading = { ...state.loading, ...payload, } }, // ============= get staking list ============= getStakingList(state, _action: PayloadAction) { state.loading.loadingGetStakingList = true }, getStakingListSuccess(state, action: PayloadAction) { const { payload } = action state.loading.loadingGetStakingList = false state.stakingList = payload }, getStakingListFailed(state) { state.loading.loadingGetStakingList = false }, // ============= get pool config list ============= getPoolConfigList(state, _action: PayloadAction) { state.loading.loadingGetPoolConfigList = true }, getPoolConfigListSuccess(state, action: PayloadAction) { const { payload } = action state.loading.loadingGetPoolConfigList = false state.poolConfigList = payload }, getPoolConfigListFailed(state) { state.loading.loadingGetPoolConfigList = false }, // ============= claim staking ============= claimStaking(state, _action: PayloadAction) { state.loading.loadingClaimStaking = true }, claimStakingSuccess(state) { state.loading.loadingClaimStaking = false }, claimStakingFailed(state) { state.loading.loadingClaimStaking = false }, // ============= Staking ============= stake(state, _action: PayloadAction) { state.loading.loadingStaking = true }, stakeSuccess(state) { state.loading.loadingStaking = false }, stakeFailed(state) { state.loading.loadingStaking = false }, }, }) const { reducer } = stakingPoolSlice export const { actions: stakingPoolActions } = stakingPoolSlice export default reducer