import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { withRouter } from 'react-router'; import { connect } from 'react-redux'; import { NavLink } from 'react-router-dom'; import get from 'lodash/get'; import ProfilePlaceholder from 'assets/img/profile_placeholder.png'; import { isValidURL } from 'utils/utils'; import { logout, getProfile } from 'actions/access.actions'; import toggleLogin from 'actions/modals.actions'; import './header.scss'; class Header extends Component { static propTypes = { /* Router */ location: PropTypes.any.isRequired, history: PropTypes.any.isRequired, /* Redux */ userObj: PropTypes.object, logoutUser: PropTypes.func, getProfile: PropTypes.func, toggleLogin: PropTypes.func, }; static defaultProps = { userObj: {}, logoutUser: () => null, toggleLogin: () => null, getProfile: () => null, }; componentWillReceiveProps(nextProps) { if (get(nextProps.location, 'state.loadUser')) { this.props.getProfile(); this.props.history.replace({ state: null }); } } handleLoginClick = () => { this.props.toggleLogin(true); }; onLogoutClick = () => { this.props.logoutUser(); }; render() { const { userObj } = this.props; let userInfoEle = null; let profileImg = null; let profileWidth = 0; let profileHeight = 0; if (get(userObj, 'isAuthenticated')) { if (get(userObj, 'loggedUserObj.imgUrl') && isValidURL(userObj.loggedUserObj.imgUrl)) { profileImg = userObj.loggedUserObj.imgUrl; profileWidth = userObj.loggedUserObj.imgWidth; profileHeight = userObj.loggedUserObj.imgHeight; } else { profileImg = ProfilePlaceholder; } let name = get(userObj, 'loggedUserObj.email'); if (get(userObj, 'loggedUserObj.userName')) { name = userObj.loggedUserObj.userName; } let backgroundSize = 'auto 30px'; if (profileWidth < profileHeight) { backgroundSize = '30px auto'; } userInfoEle = (