fleet/frontend/components/App/App.jsx
Zachary Wasserman ccc8581229
Upgrade eslint and dependencies (#2255)
Updates configuration and fixes issues introduced
2020-07-06 19:31:48 -07:00

80 lines
1.7 KiB
JavaScript

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { noop } from 'lodash';
import classnames from 'classnames';
import { authToken } from 'utilities/local';
import { fetchCurrentUser } from 'redux/nodes/auth/actions';
import { getConfig, getEnrollSecret } from 'redux/nodes/app/actions';
import userInterface from 'interfaces/user';
export class App extends Component {
static propTypes = {
children: PropTypes.element,
dispatch: PropTypes.func,
showBackgroundImage: PropTypes.bool,
user: userInterface,
};
static defaultProps = {
dispatch: noop,
};
componentWillMount () {
const { dispatch, user } = this.props;
if (!user && !!authToken()) {
dispatch(fetchCurrentUser())
.catch(() => false);
}
if (user) {
dispatch(getConfig())
.catch(() => false);
dispatch(getEnrollSecret())
.catch(() => false);
}
return false;
}
componentWillReceiveProps (nextProps) {
const { dispatch, user } = nextProps;
if (user && this.props.user !== user) {
dispatch(getConfig())
.catch(() => false);
dispatch(getEnrollSecret())
.catch(() => false);
}
}
render () {
const { children, showBackgroundImage } = this.props;
const wrapperStyles = classnames(
'wrapper',
{ 'wrapper--background': showBackgroundImage },
);
return (
<div className={wrapperStyles}>
{children}
</div>
);
}
}
const mapStateToProps = (state) => {
const { app, auth } = state;
const { showBackgroundImage } = app;
const { user } = auth;
return {
showBackgroundImage,
user,
};
};
export default connect(mapStateToProps)(App);