badguardhome/client/src/reducers/queryLogs.js

142 lines
4.9 KiB
JavaScript
Raw Normal View History

2019-09-04 14:39:35 +00:00
import { handleActions } from 'redux-actions';
import * as actions from '../actions/queryLogs';
2019-09-26 08:36:02 +00:00
import { DEFAULT_LOGS_FILTER } from '../helpers/constants';
2019-09-04 14:39:35 +00:00
const queryLogs = handleActions(
{
[actions.setLogsPagination]: (state, { payload }) => {
const { page, pageSize } = payload;
const { allLogs } = state;
const rowsStart = pageSize * page;
const rowsEnd = (pageSize * page) + pageSize;
const logsSlice = allLogs.slice(rowsStart, rowsEnd);
const pages = Math.ceil(allLogs.length / pageSize);
return {
...state,
pages,
logs: logsSlice,
};
},
[actions.setLogsPage]: (state, { payload }) => ({
...state,
page: payload,
}),
[actions.setLogsFilterRequest]: state => ({ ...state, processingGetLogs: true }),
[actions.setLogsFilterFailure]: state => ({ ...state, processingGetLogs: false }),
[actions.setLogsFilterSuccess]: (state, { payload }) => {
const { logs, oldest, filter } = payload;
const pageSize = 100;
const page = 0;
const pages = Math.ceil(logs.length / pageSize);
const total = logs.length;
const rowsStart = pageSize * page;
const rowsEnd = (pageSize * page) + pageSize;
const logsSlice = logs.slice(rowsStart, rowsEnd);
const isFiltered = Object.keys(filter).some(key => filter[key]);
return {
...state,
oldest,
filter,
isFiltered,
pages,
total,
logs: logsSlice,
allLogs: logs,
processingGetLogs: false,
};
},
2019-09-26 08:36:02 +00:00
2019-09-04 14:39:35 +00:00
[actions.getLogsRequest]: state => ({ ...state, processingGetLogs: true }),
[actions.getLogsFailure]: state => ({ ...state, processingGetLogs: false }),
[actions.getLogsSuccess]: (state, { payload }) => {
const {
2020-01-30 08:57:51 +00:00
logs, oldest, older_than, page, pageSize, initial,
} = payload;
2020-01-30 08:57:51 +00:00
let logsWithOffset = state.allLogs.length > 0 && !initial ? state.allLogs : logs;
let allLogs = logs;
2019-11-13 16:09:40 +00:00
if (older_than) {
logsWithOffset = [...state.allLogs, ...logs];
allLogs = [...state.allLogs, ...logs];
}
const pages = Math.ceil(logsWithOffset.length / pageSize);
const total = logsWithOffset.length;
const rowsStart = pageSize * page;
const rowsEnd = (pageSize * page) + pageSize;
const logsSlice = logsWithOffset.slice(rowsStart, rowsEnd);
return {
...state,
2019-11-13 16:09:40 +00:00
oldest,
pages,
total,
allLogs,
logs: logsSlice,
2019-09-26 08:36:02 +00:00
isEntireLog: logs.length < 1,
processingGetLogs: false,
};
2019-09-04 14:39:35 +00:00
},
[actions.clearLogsRequest]: state => ({ ...state, processingClear: true }),
[actions.clearLogsFailure]: state => ({ ...state, processingClear: false }),
[actions.clearLogsSuccess]: state => ({
...state,
logs: [],
processingClear: false,
}),
[actions.getLogsConfigRequest]: state => ({ ...state, processingGetConfig: true }),
[actions.getLogsConfigFailure]: state => ({ ...state, processingGetConfig: false }),
[actions.getLogsConfigSuccess]: (state, { payload }) => ({
...state,
...payload,
processingGetConfig: false,
}),
[actions.setLogsConfigRequest]: state => ({ ...state, processingSetConfig: true }),
[actions.setLogsConfigFailure]: state => ({ ...state, processingSetConfig: false }),
[actions.setLogsConfigSuccess]: (state, { payload }) => ({
...state,
...payload,
processingSetConfig: false,
}),
[actions.getAdditionalLogsRequest]: state => ({
...state, processingAdditionalLogs: true, processingGetLogs: true,
}),
[actions.getAdditionalLogsFailure]: state => ({
...state, processingAdditionalLogs: false, processingGetLogs: false,
}),
[actions.getAdditionalLogsSuccess]: state => ({
...state, processingAdditionalLogs: false, processingGetLogs: false,
}),
2019-09-04 14:39:35 +00:00
},
{
processingGetLogs: true,
processingClear: false,
processingGetConfig: false,
processingSetConfig: false,
processingAdditionalLogs: false,
2019-09-04 14:39:35 +00:00
logs: [],
interval: 1,
allLogs: [],
page: 0,
pages: 0,
total: 0,
2019-09-04 14:39:35 +00:00
enabled: true,
2019-11-13 16:09:40 +00:00
oldest: '',
2019-09-26 08:36:02 +00:00
filter: DEFAULT_LOGS_FILTER,
isFiltered: false,
2020-03-11 13:54:05 +00:00
anonymize_client_ip: false,
2019-09-04 14:39:35 +00:00
},
);
export default queryLogs;