import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { translate as __ } from 'foremanReact/common/I18n'; import { get } from 'lodash'; import SetOrganization from '../SelectOrg/SetOrganization'; import Header from '../../containers/Application/Headers'; import * as organizationActions from '../../scenes/Organizations/OrganizationActions'; const mapStateToProps = state => ({ organization: state.katello.organization, }); const mapDispatchToProps = dispatch => bindActionCreators({ ...organizationActions }, dispatch); function withOrganization(WrappedComponent, redirectPath) { class CheckOrg extends Component { constructor(props) { super(props); this.state = { orgId: null }; } static getDerivedStateFromProps(newProps, state) { const orgNodeId = document.getElementById('organization-id').dataset.id; if (state.orgId !== orgNodeId) { return { orgId: orgNodeId }; } return null; } componentDidUpdate(prevProps) { const { location } = this.props; const orgTitle = get(location, 'state.orgChanged'); const prevOrgTitle = get(prevProps, 'location.state.orgChanged'); if (orgTitle !== prevOrgTitle) { window.tfm.nav.changeOrganization(orgTitle); } } render() { const { organization, location } = this.props; const newOrgSelected = get(location, 'state.orgChanged'); if (newOrgSelected) { if (!organization.label && !organization.loading) { this.props.loadOrganization(); } return ; } else if (this.state.orgId === '') { return (
); } return ; } } CheckOrg.propTypes = { location: PropTypes.shape({}), loadOrganization: PropTypes.func.isRequired, organization: PropTypes.shape({}).isRequired, }; CheckOrg.defaultProps = { location: undefined, }; return connect(mapStateToProps, mapDispatchToProps)(CheckOrg); } export default withOrganization;