{"version":3,"file":"js/491-fe4c5510111dddb5ae0c.chunk.js","mappings":"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","sources":["webpack://Maxwell/./app/assets/javascripts/v2/actions/ui_actions/messenger.js","webpack://Maxwell/./app/assets/javascripts/v2/components/Global/Communication/MessengerIcon/index.js","webpack://Maxwell/./app/assets/javascripts/v2/selectors/messenger_info.js"],"sourcesContent":["import Route from 'Services/Route'\nimport { getMessengerViewable } from 'v2/selectors/messenger_info'\nimport { getLoanFileId } from 'v2/selectors/page_info'\nimport api from 'utils/api'\nimport AT from '../../actionTypes'\nimport { getUnreadMessagesCount } from '../../selectors/page_info'\n\nconst toggleClass = function (element, className) {\n  const currentClassNameList = element.className.split(' ')\n  const classNameIndex = currentClassNameList.indexOf(className)\n  const hasClassName = classNameIndex > -1\n  if (hasClassName) {\n    currentClassNameList.splice(classNameIndex, 1)\n  } else {\n    currentClassNameList.push(className)\n  }\n  element.className = currentClassNameList.join(' ')\n}\n\nconst elementHasClass = function (element, className) {\n  const classNameList = element.className.split(' ')\n  return classNameList.indexOf(className) > -1\n}\n\nconst toggleMessengerClasses = function () {\n  const body = document.getElementsByTagName('BODY')[0]\n  toggleClass(body, 'open')\n  toggleClass(body, 'closed')\n}\n\nexport const closeMessenger = function () {\n  const body = document.getElementsByTagName('BODY')[0]\n  if (elementHasClass(body, 'closed')) {\n    return\n  }\n  toggleMessengerClasses()\n}\n\nconst openMessenger = function () {\n  const body = document.getElementsByTagName('BODY')[0]\n  if (elementHasClass(body, 'open')) {\n    return\n  }\n  toggleMessengerClasses()\n}\n\nexport const markMessagesAsSeen = () => async (dispatch, getState) => {\n  const unReadMessageCount = getUnreadMessagesCount(getState())\n  if (!unReadMessageCount) {\n    return\n  }\n  const loanFileId = getLoanFileId(getState())\n  const url = Route.api.loanFile.messenger.toggle({ loanFileId })\n  try {\n    await api(getState).post(url, {})\n    dispatch({ type: AT.RESET_UNREAD_MESSAGES_COUNT })\n  } catch (error) {\n    // No error handling required as there is no indication on UI\n  }\n\n}\n\nexport const initializeMessenger = () => (dispatch, getState) => {\n  const messengerViewable = getMessengerViewable(getState())\n\n  if (messengerViewable) {\n    openMessenger()\n    dispatch(markMessagesAsSeen())\n  }\n}\n\nexport const toggleMessenger = () => (dispatch, getState) => {\n  const messengerViewable = getMessengerViewable(getState())\n  if (messengerViewable) {\n    closeMessenger()\n  } else {\n    openMessenger()\n    dispatch(markMessagesAsSeen())\n  }\n\n  dispatch({\n    type: AT.SET_MESSENGER_VIEWABLE_STATE,\n    payload: !messengerViewable,\n  })\n}\n\nexport const setMessengerViewable = () => (dispatch, getState) => {\n  const messengerViewable = getMessengerViewable(getState())\n  if (!messengerViewable) {\n    dispatch({\n      type: AT.SET_MESSENGER_VIEWABLE_STATE,\n      payload: true,\n    })\n  }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n  initializeMessenger,\n  toggleMessenger,\n} from 'v2/actions/ui_actions/messenger'\nimport { getUnreadMessagesCount } from 'v2/selectors/page_info'\n\nclass MessengerIcon extends React.PureComponent {\n  static propTypes = {\n    downloadPath: PropTypes.string,\n    initialize: PropTypes.func.isRequired,\n    toggle: PropTypes.func.isRequired,\n    unreadMessageCount: PropTypes.number,\n    prependLinks: PropTypes.arrayOf(PropTypes.shape()),\n  }\n\n  static defaultProps = {\n    downloadPath: '',\n    unreadMessageCount: 0,\n    prependLinks: null,\n  }\n\n  componentDidMount() {\n    const { initialize } = this.props\n    initialize()\n  }\n\n  getScope = () => {\n    return window.location.pathname.includes('lenders')\n      ? 'lenders'\n      : 'borrowers'\n  }\n\n  onMessageIconClick = () => {\n    const { toggle } = this.props\n    toggle()\n  }\n\n  onKeyDown = (event) => {\n    if (event.keyCode === 13) {\n      this.onMessageIconClick()\n    }\n  }\n\n  stopBubbling = (e) => {\n    e.stopPropagation()\n  }\n\n  render() {\n    const { unreadMessageCount, downloadPath, prependLinks } = this.props\n\n    const className = this.getScope() === 'lenders' ? '' : 'message-notifier-container-mobile'\n    return (\n      <div className={`message-notifier-container ${className}`}>\n        <div className=\"message-notifier-container__prepend-links\">\n          {prependLinks}\n        </div>\n        <div\n          className=\"message-notifier\"\n          onClick={this.onMessageIconClick}\n          role=\"button\"\n          onKeyDown={this.onKeyDown}\n          tabIndex=\"0\"\n        >\n          {unreadMessageCount ? (\n            <span className=\"message-notifier-count\">{unreadMessageCount}</span>\n          ) : null}\n          {this.getScope() === 'lenders' ? (\n            <a href={downloadPath} onClick={this.stopBubbling}>\n              <i\n                id=\"downloadIcon\"\n                className=\"glyphicon glyphicon-download-alt comm-download-icon\"\n                data-toggle=\"tooltip\"\n                data-placement=\"bottom\"\n                title=\"Download Messages\"\n              />\n            </a>\n          ) : null}\n        </div>\n      </div>\n    )\n  }\n}\n\nconst bindActions = (dispatch) => ({\n  initialize: (...args) => dispatch(initializeMessenger(...args)),\n  toggle: (...args) => dispatch(toggleMessenger(...args)),\n})\n\nconst mapStateToProps = (state) => ({ unreadMessageCount: getUnreadMessagesCount(state) })\n\nexport default connect(mapStateToProps, bindActions)(MessengerIcon)\n","export const getMessengerInfo = state => state.v2.messengerInfo\n\nexport const getMessengerUiFlags = state => getMessengerInfo(state).uiFlags\n\nexport const getMessengerViewable = state => getMessengerUiFlags(state).messengerViewable\n"],"names":["i","toggleClass","element","className","currentClassNameList","split","classNameIndex","indexOf","splice","push","join","elementHasClass","toggleMessengerClasses","body","document","getElementsByTagName","closeMessenger","openMessenger","markMessagesAsSeen","dispatch","getState","getUnreadMessagesCount","loanFileId","getLoanFileId","url","Route","api","post","type","AT","initializeMessenger","getMessengerViewable","toggleMessenger","messengerViewable","payload","MessengerIcon","getScope","window","location","pathname","includes","onMessageIconClick","toggle","props","onKeyDown","event","keyCode","stopBubbling","e","stopPropagation","initialize","this","unreadMessageCount","downloadPath","prependLinks","onClick","role","tabIndex","href","id","title","React","propTypes","PropTypes","defaultProps","connect","state","v2","messengerInfo","getMessengerInfo","uiFlags","getMessengerUiFlags"],"sourceRoot":""}