govau/performance-dashboard

View on GitHub
client/src/_shared/redux/widgets/widgetsActions.js

Summary

Maintainability
C
7 hrs
Test Coverage
export const types = {
  HYDRATE__WIDGET_UPDATED: 'hydrate/widget_updated',
  HYDRATE__WIDGET_CREATED: 'hydrate/widget_created',
};

export const updateWidget = ({ widget_id, dashboard_id, formData }) => {
  return (dispatch, getState, api) => {
    return api(
      `dashboards/${dashboard_id}/widgets/${widget_id}`,
      getState().currentUser.token,
      {
        method: 'PATCH',
        body: JSON.stringify(formData),
      },
    ).then(response => {
      dispatch({
        type: types.HYDRATE__WIDGET_UPDATED,
        payload: {
          widget: response,
        },
      });

      return response;
    });
  };
};

export const createWidget = (dashboardId, { formData }) => {
  return (dispatch, getState, api) => {
    return api(
      `dashboards/${dashboardId}/widgets`,
      getState().currentUser.token,
      {
        method: 'POST',
        body: JSON.stringify(formData),
      },
    ).then(response => {
      dispatch({
        type: types.HYDRATE__WIDGET_CREATED,
        payload: {
          widget: response,
        },
      });

      return response;
    });
  };
};

export const initialiseWidget = (dashboardId, formData) => {
  return (dispatch, getState, api) => {
    return api(
      `dashboards/${dashboardId}/initialise-widget`,
      getState().currentUser.token,
      {
        method: 'POST',
        body: JSON.stringify(formData),
      },
    ).then(response => {
      dispatch({
        type: types.HYDRATE__WIDGET_CREATED,
        payload: {
          widget: response,
        },
      });

      return response;
    });
  };
};

export const initialiseKpis = (dashboardId, formData) => {
  return (dispatch, getState, api) => {
    return api(
      `dashboards/${dashboardId}/initialise-kpis`,
      getState().currentUser.token,
      {
        method: 'POST',
        body: JSON.stringify(formData),
      },
    );
  };
};