openreplay/frontend/app/duck/dashboard.js
2023-01-13 17:08:36 +01:00

48 lines
1.2 KiB
JavaScript

import { List, Map } from 'immutable';
import { createRequestReducer } from './funcTools/request';
import { mergeReducers, } from './funcTools/tools';
import { RequestTypes } from 'Duck/requestStateCreator';
const SET_SHOW_ALERTS = 'dashboard/SET_SHOW_ALERTS';
const FETCH_PERFORMANCE_SEARCH = 'dashboard/FETCH_PERFORMANCE_SEARCH';
const ON_BOARD = new RequestTypes('plan/ON_BOARD');
const initialState = Map({
showAlerts: false,
boarding: undefined,
boardingCompletion: undefined,
});
const reducer = (state = initialState, action = {}) => {
switch (action.type) {
case SET_SHOW_ALERTS:
return state.set('showAlerts', action.state);
case ON_BOARD.SUCCESS:
const tasks = List(action.data);
const completion = tasks.filter(task => task.done).size * 100 / tasks.size;
return state.set('boarding', tasks).set('boardingCompletion', Math.trunc(completion));
}
return state;
};
export default mergeReducers(
reducer,
createRequestReducer({
performanceSearchRequest: FETCH_PERFORMANCE_SEARCH,
}),
);
export function setShowAlerts(state) {
return {
type: SET_SHOW_ALERTS,
state,
}
}
export function getOnboard() {
return {
types: ON_BOARD.toArray(),
call: client => client.get('/boarding'),
}
}