theforeman/foreman

View on GitHub
webpack/assets/javascripts/react_app/components/hosts/powerStatus/index.js

Summary

Maintainability
A
55 mins
Test Coverage
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { useSelector, useDispatch } from 'react-redux';
import PowerStatus from './PowerStatus';
import { get } from '../../../redux/API';
import { HOST_POWER_STATUS } from './PowerStatusConstants';
import { selectState, selectTitle } from './PowerStatusSelectors';

const ConnectedPowerStatus = ({ id, url }) => {
  const key = `${HOST_POWER_STATUS}_${id}`;
  const state = useSelector(store => selectState(store, key));
  const title = useSelector(store => selectTitle(store, key));
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(get({ key, url }));
  }, [url, key, dispatch]);

  return <PowerStatus state={state} title={title} />;
};

ConnectedPowerStatus.propTypes = {
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
  url: PropTypes.string.isRequired,
};

export default ConnectedPowerStatus;