src/redux/track/reducer.ts
unknown
plain_text
2 years ago
2.7 kB
6
Indexable
import AsyncStorage from '@react-native-community/async-storage';
import {persistReducer} from 'redux-persist';
import * as Actions from './constants';
import * as TrackActionType from './type';
import {ActionType} from '../type';
const initState: TrackActionType.TrackState = {
absoluteStartTrackDistanceMiles: 0,
trackStation: [],
trackSpeedLimit: [],
trackGroupData: {},
stopStations: {},
trackLoading: false,
trackTotalLength: 0,
nearestTrack: null,
};
const TrackReducer = (
state: TrackActionType.TrackState = initState,
action: ActionType = {
type: '',
payload: {},
},
) => {
switch (action.type) {
case Actions.TOGGLE_TRACK_LOADING:
return {
...state,
trackLoading: action.payload,
};
case Actions.SET_TRACK_TOTAL_LENGTH:
return {...state, trackTotalLength: action.payload};
case Actions.CLEAR_STOP_STATION:
return {...state, stopStations: {}};
case Actions.SET_STOP_STATION:
return {
...state,
stopStations: {
...state.stopStations,
[action.payload.key]: action.payload,
},
};
case Actions.GET_TRACK_DATA_SUCCESS:
return {
...state,
absoluteStartTrackDistanceMiles:
action.payload.absoluteStartTrackDistanceMiles,
trackGroupData: action.payload,
};
case Actions.GET_TRACK_DATA_FAIL:
return {
...state,
trackGroupData: {
...state.trackGroupData,
[action.payload.key]: {
...action.payload,
data: {
...action.payload.data,
trackStation: action.payload.data.trackStation,
corridors: action.payload.data.corridors,
trackSpeedLimit: action.payload.data.trackSpeedLimit,
},
},
},
};
case Actions.GET_NEAREST_TRACK_SUCCESS:
return {
...state,
nearestTrack: action.payload,
};
case Actions.GET_NEAREST_TRACK_FAIL:
return {
...state,
nearestTrack: null,
};
case Actions.CLEAR_TRACK_REDUX_EXCEPT_NEAREST_TRACK:
return {
...state,
absoluteStartTrackDistanceMiles: 0,
trackStation: [],
trackSpeedLimit: [],
trackGroupData: {},
stopStations: {},
trackLoading: false,
trackTotalLength: 0,
};
default:
return state;
}
};
const persistConfig = {
key: 'track',
storage: AsyncStorage,
whitelist: [
'absoluteStartTrackDistanceMiles',
'trackStation',
'trackSpeedLimit',
'trackTotalLength',
],
blacklist: ['stopStations', 'trackGroupData'],
};
export default persistReducer(persistConfig, TrackReducer);
Editor is loading...