1
0
mirror of https://github.com/alice-lg/alice-lg.git synced 2024-05-11 05:55:03 +00:00

85 lines
1.7 KiB
React
Raw Normal View History

const LOCATION_CHANGE = '@@router/LOCATION_CHANGE'
2018-07-16 10:52:41 +02:00
import {FETCH_ROUTES_RECEIVED_REQUEST,
FETCH_ROUTES_RECEIVED_SUCCESS,
FETCH_ROUTES_RECEIVED_ERROR,
FETCH_ROUTES_FILTERED_REQUEST,
FETCH_ROUTES_FILTERED_SUCCESS,
FETCH_ROUTES_FILTERED_ERROR,
FETCH_ROUTES_NOT_EXPORTED_REQUEST,
FETCH_ROUTES_NOT_EXPORTED_SUCCESS,
FETCH_ROUTES_NOT_EXPORTED_ERROR} from './actions'
const initialState = {
2018-07-16 09:02:15 +02:00
received: [],
receivedLoading: false,
receivedPage: 0,
receivedTotalPages: 0,
receivedTotalResults: 0,
2018-07-16 10:52:41 +02:00
receivedApiStatus: {},
2018-07-16 09:02:15 +02:00
filtered: [],
filteredLoading: false,
filteredPage: 0,
filteredTotalPages: 0,
filteredTotalResults: 0,
2018-07-16 10:52:41 +02:00
filteredApiStatus: {},
2018-07-16 09:02:15 +02:00
notExported: [],
notExportedLoading: false,
notExportedPage: 0,
notExportedTotalPages: 0,
notExportedTotalResults: 0,
2018-07-16 10:52:41 +02:00
notExportedApiStatus: {},
filterQuery: "",
}
// Handlers:
function _handleLocationChange(state, payload) {
// Check query payload
let query = payload.query;
let filterQuery = query["q"] || "";
let receivedPage = query["pr"] || 0;
let filteredPage = query["pf"] || 0;
let notExportedPage = query["pn"] || 0;
// Assert numeric
receivedPage = parseInt(receivedPage);
filteredPage = parseInt(filteredPage);
notExportedPage = parseInt(notExportedPage);
let nextState = Object.assign({}, state, {
filterQuery: filterQuery,
receivedPage: receivedPage,
filteredPage: filteredPage,
notExportedPage: notExportedPage,
});
return nextState;
}
export default function reducer(state=initialState, action) {
switch(action.type) {
case LOCATION_CHANGE:
return _handleLocationChange(state, action.payload);
}
return state;
}