import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import _ from 'lodash'; import injectNotify from '/imports/ui/components/toast/inject-notify/component'; import { Session } from 'meteor/session'; const ALERT_INTERVAL = 2000; // 2 seconds const ALERT_LIFETIME = 4000; // 4 seconds const propTypes = { notify: PropTypes.func.isRequired, onOpen: PropTypes.func.isRequired, chatId: PropTypes.string.isRequired, message: PropTypes.node.isRequired, content: PropTypes.node.isRequired, }; class ChatPushAlert extends PureComponent { static link(message, chatId) { return (
{ Session.set('openPanel', 'chat'); Session.set('idChatOpen', chatId); }} > { message }
); } constructor(props) { super(props); this.showNotify = _.debounce(this.showNotify.bind(this), ALERT_INTERVAL); this.componentDidMount = this.showNotify; this.componentDidUpdate = this.showNotify; } showNotify() { const { notify, onOpen, chatId, message, content, } = this.props; return notify( ChatPushAlert.link(message, chatId), 'info', 'chat', { onOpen, autoClose: ALERT_LIFETIME }, ChatPushAlert.link(content, chatId), true, ); } render() { return null; } } ChatPushAlert.propTypes = propTypes; export default injectNotify(ChatPushAlert);