React = require 'react'
{Actions,
 CategoryStore,
 TaskFactory,
 FocusedPerspectiveStore} = require 'nylas-exports'

class ThreadArchiveQuickAction extends React.Component
  @displayName: 'ThreadArchiveQuickAction'
  @propTypes:
    thread: React.PropTypes.object

  render: =>
    mailboxPerspective = FocusedPerspectiveStore.current()
    archive = null

    if mailboxPerspective?.canArchiveThreads()
      archive = <div key="archive"
                     title="Archive"
                     style={{ order: 100 }}
                     className="btn action action-archive"
                     onClick={@_onArchive}></div>
    return archive

  shouldComponentUpdate: (newProps, newState) ->
    newProps.thread.id isnt @props?.thread.id

  _onArchive: (event) =>
    tasks = TaskFactory.tasksForArchiving
      threads: [@props.thread]
      fromPerspective: FocusedPerspectiveStore.current()
    Actions.queueTasks(tasks)

    # Don't trigger the thread row click
    event.stopPropagation()

class ThreadTrashQuickAction extends React.Component
  @displayName: 'ThreadTrashQuickAction'
  @propTypes:
    thread: React.PropTypes.object

  render: =>
    mailboxPerspective = FocusedPerspectiveStore.current()
    trash = null

    if mailboxPerspective?.canTrashThreads()
      trash = <div key="remove"
                   title="Trash"
                   style={{ order: 110 }}
                   className='btn action action-trash'
                   onClick={@_onRemove}></div>
    return trash

  shouldComponentUpdate: (newProps, newState) ->
    newProps.thread.id isnt @props?.thread.id

  _onRemove: (event) =>
    tasks = TaskFactory.tasksForMovingToTrash
      threads: [@props.thread]
      fromPerspective: FocusedPerspectiveStore.current()
    Actions.queueTasks(tasks)

    # Don't trigger the thread row click
    event.stopPropagation()

module.exports = { ThreadArchiveQuickAction, ThreadTrashQuickAction }