React = require 'react' {Actions} = require 'nylas-exports' NotificationStore = require './notifications-store' class NotificationStickyItem extends React.Component @displayName: "NotificationStickyItem" render: => notif = @props.notification iconClass = if notif.icon then "fa #{notif.icon}" else "" actionDefault = null actionComponents = notif.actions?.map (action) => classname = "action " if action.default actionDefault = action classname += "default" actionClick = (event) => @_fireItemAction(notif, action) event.stopPropagation() event.preventDefault() {action.label} if actionDefault
@_fireItemAction(notif, actionDefault)}>
{notif.message}
{actionComponents}
else
{notif.message}
{actionComponents}
_fireItemAction: (notification, action) => Actions.notificationActionTaken({notification, action}) class NotificationStickyBar extends React.Component @displayName: "NotificationsStickyBar" @containerRequired: false constructor: (@props) -> @state = @_getStateFromStores() _getStateFromStores: => items: NotificationStore.stickyNotifications() _onDataChanged: => @setState @_getStateFromStores() componentDidMount: => @_unlistener = NotificationStore.listen(@_onDataChanged, @) @ # It's important that every React class explicitly stops listening to # N1 events before it unmounts. Thank you event-kit # This can be fixed via a Reflux mixin componentWillUnmount: => @_unlistener() if @_unlistener @ render: =>
{@_notificationComponents()}
_notificationComponents: => @state.items.map (notif) -> module.exports = NotificationStickyBar