1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-09 01:17:06 +02:00
unleash.unleash/frontend/src/store/feature-metrics-actions.js
2017-06-29 08:36:10 +02:00

54 lines
1.5 KiB
JavaScript

import api from '../data/feature-metrics-api';
export const START_FETCH_FEATURE_METRICS = 'START_FETCH_FEATURE_METRICS';
export const RECEIVE_FEATURE_METRICS = 'RECEIVE_FEATURE_METRICS';
export const ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';
export const START_FETCH_SEEN_APP = 'START_FETCH_SEEN_APP';
export const RECEIVE_SEEN_APPS = 'RECEIVE_SEEN_APPS';
export const ERROR_FETCH_SEEN_APP = 'ERROR_FETCH_SEEN_APP';
function receiveFeatureMetrics (json) {
return {
type: RECEIVE_FEATURE_METRICS,
value: json,
receivedAt: Date.now(),
};
}
function receiveSeenApps (json) {
return {
type: RECEIVE_SEEN_APPS,
value: json,
receivedAt: Date.now(),
};
}
function dispatchAndThrow (dispatch, type) {
return (error) => {
dispatch({ type, error, receivedAt: Date.now() });
throw error;
};
}
export function fetchFeatureMetrics () {
return dispatch => {
dispatch({ type: START_FETCH_SEEN_APP });
return api.fetchFeatureMetrics()
.then(json => dispatch(receiveFeatureMetrics(json)))
.catch(dispatchAndThrow(dispatch, ERROR_FETCH_SEEN_APP));
};
}
export function fetchSeenApps () {
return dispatch => {
dispatch({ type: START_FETCH_FEATURE_METRICS });
return api.fetchSeenApps()
.then(json => dispatch(receiveSeenApps(json)))
.catch(dispatchAndThrow(dispatch, ERROR_FETCH_FEATURE_TOGGLES));
};
}