theforeman/foreman

View on GitHub
webpack/assets/javascripts/react_app/components/users/PersonalAccessTokens/PersonalAccessTokensActions.js

Summary

Maintainability
A
0 mins
Test Coverage
import URI from 'urijs';
import { API } from '../../../redux/API';
import { addToast } from '../../ToastsList';
import { ajaxRequestAction } from '../../../redux/actions/common';
import { translate as __ } from '../../../common/I18n';
import {
  PERSONAL_ACCESS_TOKEN_CLEAR,
  PERSONAL_ACCESS_TOKENS_REQUEST,
  PERSONAL_ACCESS_TOKENS_SUCCESS,
  PERSONAL_ACCESS_TOKENS_FAILURE,
} from './PersonalAccessTokensConstants';

export const getPersonalAccessTokens = ({ url }) => dispatch => {
  const uri = new URI(url);
  // eslint-disable-next-line camelcase
  uri.setSearch({ per_page: 'all' });

  ajaxRequestAction({
    dispatch,
    url: uri,
    requestAction: PERSONAL_ACCESS_TOKENS_REQUEST,
    successAction: PERSONAL_ACCESS_TOKENS_SUCCESS,
    failedAction: PERSONAL_ACCESS_TOKENS_FAILURE,
  });
};

export const revokePersonalAccessToken = ({ url, id }) => async dispatch => {
  try {
    await API.delete(`${url}/${id}`);
    dispatch(getPersonalAccessTokens({ url }));
    dispatch(
      addToast({
        type: 'success',
        message: __('Token was successfully revoked.'),
      })
    );
  } catch (error) {
    /* eslint-disable no-console */
    console.log(error);
    dispatch(
      addToast({
        type: 'error',
        message: __('Could not revoke Token: ') + error,
      })
    );
  }
};

export const clearNewPersonalAccessToken = () => dispatch =>
  dispatch({
    type: PERSONAL_ACCESS_TOKEN_CLEAR,
    payload: {},
  });