mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-10-06 19:26:55 +08:00
Quick actions fix
Summary: Fixes T2345. Test Plan: Tested manually Reviewers: bengotow Reviewed By: bengotow Maniphest Tasks: T2345 Differential Revision: https://phab.nylas.com/D1886
This commit is contained in:
parent
e8b1e98e60
commit
685fd2fc69
4 changed files with 37 additions and 4 deletions
|
@ -4,19 +4,25 @@ React = require 'react'
|
||||||
Utils,
|
Utils,
|
||||||
Thread,
|
Thread,
|
||||||
ArchiveThreadHelper,
|
ArchiveThreadHelper,
|
||||||
|
CategoryStore,
|
||||||
|
ChangeFolderTask,
|
||||||
|
ChangeLabelsTask,
|
||||||
NamespaceStore} = require 'nylas-exports'
|
NamespaceStore} = require 'nylas-exports'
|
||||||
|
|
||||||
class ThreadListQuickActions extends React.Component
|
class ThreadListQuickActions extends React.Component
|
||||||
@displayName: 'ThreadListQuickActions'
|
@displayName: 'ThreadListQuickActions'
|
||||||
@propTypes:
|
@propTypes:
|
||||||
thread: React.PropTypes.object
|
thread: React.PropTypes.object
|
||||||
|
categoryId: React.PropTypes.integer
|
||||||
|
|
||||||
render: =>
|
render: =>
|
||||||
actions = []
|
actions = []
|
||||||
actions.push <div key="reply" className="action action-reply" onClick={@_onReply}></div>
|
actions.push <div key="reply" className="action action-reply" onClick={@_onReply}></div>
|
||||||
actions.push <div key="fwd" className="action action-forward" onClick={@_onForward}></div>
|
actions.push <div key="fwd" className="action action-forward" onClick={@_onForward}></div>
|
||||||
if not @props.thread.hasCategoryName('archive')
|
if @_shouldDisplayArchiveButton()
|
||||||
actions.push <div key="archive" className="action action-archive" onClick={@_onArchive}></div>
|
actions.push <div key="archive" className="action action-archive" onClick={@_onArchive}></div>
|
||||||
|
else if NamespaceStore.current().usesLabels() and @props.categoryId == CategoryStore.getStandardCategory('all').id
|
||||||
|
actions.push <div key="trash" className="action action-trash" onClick={@_onTrash}></div>
|
||||||
|
|
||||||
<div className="inner">
|
<div className="inner">
|
||||||
{actions}
|
{actions}
|
||||||
|
@ -25,6 +31,29 @@ class ThreadListQuickActions extends React.Component
|
||||||
shouldComponentUpdate: (newProps, newState) ->
|
shouldComponentUpdate: (newProps, newState) ->
|
||||||
newProps.thread.id isnt @props?.thread.id
|
newProps.thread.id isnt @props?.thread.id
|
||||||
|
|
||||||
|
_shouldDisplayArchiveButton: =>
|
||||||
|
if @props.categoryId != CategoryStore.getStandardCategory('archive')?.id and @props.categoryId != CategoryStore.getStandardCategory('trash')?.id
|
||||||
|
if NamespaceStore.current().usesLabels()
|
||||||
|
if @props.thread.labels.length == 1 and (@props.thread.labels[0].name == "archive" or @props.thread.labels[0].name == "all")
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
else if @props.thread.folders.length == 1 and @props.thread.folders[0].name == "archive"
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
|
||||||
|
_onTrash: (event) =>
|
||||||
|
params = {
|
||||||
|
thread: @props.thread,
|
||||||
|
labelsToRemove: [CategoryStore.byId(@props.categoryId)],
|
||||||
|
labelsToAdd: [CategoryStore.getStandardCategory("trash")]
|
||||||
|
}
|
||||||
|
Actions.queueTask(new ChangeLabelsTask(params))
|
||||||
|
# Don't trigger the thread row click
|
||||||
|
event.stopPropagation()
|
||||||
|
|
||||||
|
|
||||||
_onForward: (event) =>
|
_onForward: (event) =>
|
||||||
Actions.composeForward({thread: @props.thread, popout: true})
|
Actions.composeForward({thread: @props.thread, popout: true})
|
||||||
# Don't trigger the thread row click
|
# Don't trigger the thread row click
|
||||||
|
@ -36,8 +65,8 @@ class ThreadListQuickActions extends React.Component
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|
||||||
_onArchive: (event) =>
|
_onArchive: (event) =>
|
||||||
task = ArchiveThreadHelper.getArchiveTask([@props.thread])
|
archiveTask = ArchiveThreadHelper.getArchiveTask([@props.thread])
|
||||||
Actions.queueTask(task)
|
Actions.queueTask(archiveTask)
|
||||||
|
|
||||||
# Don't trigger the thread row click
|
# Don't trigger the thread row click
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|
|
@ -116,7 +116,8 @@ class ThreadList extends React.Component
|
||||||
c5 = new ListTabular.Column
|
c5 = new ListTabular.Column
|
||||||
name: "HoverActions"
|
name: "HoverActions"
|
||||||
resolver: (thread) =>
|
resolver: (thread) =>
|
||||||
<ThreadListQuickActions thread={thread}/>
|
currentCategoryId = FocusedCategoryStore.categoryId()
|
||||||
|
<ThreadListQuickActions thread={thread} categoryId={currentCategoryId}/>
|
||||||
|
|
||||||
@wideColumns = [c1, c2, c3, c4, c5]
|
@wideColumns = [c1, c2, c3, c4, c5]
|
||||||
|
|
||||||
|
|
|
@ -224,6 +224,9 @@
|
||||||
.action.action-archive {
|
.action.action-archive {
|
||||||
background: url(../static/images/thread-list-quick-actions/ic-quick-button-archive@2x.png) top left no-repeat;
|
background: url(../static/images/thread-list-quick-actions/ic-quick-button-archive@2x.png) top left no-repeat;
|
||||||
}
|
}
|
||||||
|
.action.action-trash {
|
||||||
|
background: url(../static/images/thread-list-quick-actions/ic-quick-button-trash@2x.png) top left no-repeat;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.thread-list .list-item:hover .list-column-HoverActions {
|
.thread-list .list-item:hover .list-column-HoverActions {
|
||||||
width: 0;
|
width: 0;
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Loading…
Add table
Reference in a new issue