Mailspring/packages/client-app/internal_packages/thread-list/lib/thread-list-quick-actions.cjsx
Juan Tejada fb85db0964 [client-app]: Measure and report time when dragging threads to sidebar
Summary:
This commit adds a new action, `moveThreadsToPerspective` to be proxied and
measured through the ThreadListActionsStore. This action is called when
a thread or group of threads is dragged and dropped into an item in the
sidebar.

For now, we are only interested in timing actions that remove threads
from the inbox

Depends on D3984

Test Plan: manual

Reviewers: halla, evan, spang

Reviewed By: evan, spang

Differential Revision: https://phab.nylas.com/D3985
2017-02-21 12:10:52 -08:00

64 lines
1.7 KiB
CoffeeScript

React = require 'react'
{Actions,
CategoryStore,
TaskFactory,
AccountStore,
FocusedPerspectiveStore} = require 'nylas-exports'
class ThreadArchiveQuickAction extends React.Component
@displayName: 'ThreadArchiveQuickAction'
@propTypes:
thread: React.PropTypes.object
render: =>
allowed = FocusedPerspectiveStore.current().canArchiveThreads([@props.thread])
return <span /> unless allowed
<div
key="archive"
title="Archive"
style={{ order: 100 }}
className="btn action action-archive"
onClick={@_onArchive} />
shouldComponentUpdate: (newProps, newState) ->
newProps.thread.id isnt @props?.thread.id
_onArchive: (event) =>
# Don't trigger the thread row click
event.stopPropagation()
Actions.archiveThreads({
source: "Quick Actions: Thread List",
threads: [@props.thread],
})
class ThreadTrashQuickAction extends React.Component
@displayName: 'ThreadTrashQuickAction'
@propTypes:
thread: React.PropTypes.object
render: =>
allowed = FocusedPerspectiveStore.current().canMoveThreadsTo([@props.thread], 'trash')
return <span /> unless allowed
<div
key="remove"
title="Trash"
style={{ order: 110 }}
className='btn action action-trash'
onClick={@_onRemove} />
shouldComponentUpdate: (newProps, newState) ->
newProps.thread.id isnt @props?.thread.id
_onRemove: (event) =>
tasks = TaskFactory.tasksForMovingToTrash
source: "Quick Actions: Thread List"
threads: [@props.thread]
Actions.queueTasks(tasks)
# Don't trigger the thread row click
event.stopPropagation()
module.exports = { ThreadArchiveQuickAction, ThreadTrashQuickAction }