All files / src/containers/Header component.jsx

0% Statements 0/44
0% Branches 0/16
0% Functions 0/5
0% Lines 0/25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65                                                                                                                                 
import React from 'react';
import pure from 'recompose/pure';
import classnames from 'classnames';
import styles from './style.postcss';
import log from 'domain/log';
import { connect } from 'domain/connect';
import Icon from 'components/Icon';
import is from 'is_js';
import Config from 'domain/Config';
import testClass from 'domain/testClass';
import PropTypes from 'prop-types';
import UserInfo from './UserInfo';
import NotificationsTray from './NotificationsTray';
 
const Header = (props) => {
  log.debug('Header - impersonateData', props.impersonate);
  const classes = classnames(styles.Header,
      testClass('header'),
      { [styles.__impersonating]: props.impersonate });
  return <div className={classes}>
    <div className={classnames(styles.Header_burger, testClass('hamburger'))}
        onClick={(e) => is.function(props.onHamburgerClick) && props.onHamburgerClick(e)}>
      <Icon id="burger" />
    </div>
    <div className={styles.Header_logo} />
    <div className={styles.Header_wrap}>
      {Config.get('notificationsTray') && ! props.impersonate ?
        <NotificationsTray /> :
        null}
      <UserInfo impersonate={props.impersonate}
          router={props.router}
          routes={props.routes} />
    </div>
  </div>;
};
 
Header.propTypes = {
  router: PropTypes.any.isRequired,
  routes: PropTypes.array.isRequired,
  impersonate: PropTypes.object,
  onHamburgerClick: PropTypes.func,
};
 
function mapStateToProps(state) {
  const userProfile =
      state.get('singleSignOn').get('user') &&
      state.get('singleSignOn').get('user').get('profile');
  let impersonate;
  if (! userProfile.impersonated_user_email) return { impersonate };
 
  impersonate = {
    email: userProfile.impersonated_user_email,
    sub: userProfile.impersonated_user_id,
    avatarUrl: userProfile.impersonated_user_avatar_url,
    gender: userProfile.impersonated_user_gender,
    name: userProfile.impersonated_user_name,
    familyName: userProfile.impersonated_user_family_name,
    middleName: userProfile.impersonated_user_middle_name,
    givenName: userProfile.impersonated_user_given_name,
  };
  return { impersonate };
}
 
export default connect(mapStateToProps, null)(pure(Header));