Delete button now appears when drafts are selected

Summary: Fixes T2230 Support for deleting multiple drafts in the local drafts view

Test Plan: tested manually

Reviewers: bengotow, evan

Reviewed By: evan

Subscribers: gleb

Maniphest Tasks: T2230

Differential Revision: https://phab.nylas.com/D1714
This commit is contained in:
EthanBlackburn 2015-07-09 13:28:02 -07:00
parent 786ae7441d
commit a54bdc94fd
5 changed files with 48 additions and 1 deletions

View file

@ -0,0 +1,25 @@
React = require "react/addons"
classNames = require 'classnames'
DraftListStore = require './draft-list-store'
{RetinaImg} = require 'nylas-component-kit'
{Actions, FocusedContentStore} = require "nylas-exports"
class DraftDeleteButton extends React.Component
@displayName: 'DraftDeleteButton'
@containerRequired: false
@propTypes:
selection: React.PropTypes.object.isRequired
render: ->
<button style={order:-100}
className="btn btn-toolbar"
data-tooltip="Delete"
onClick={@_destroyDraft}>
<RetinaImg name="icon-composer-trash.png" mode={RetinaImg.Mode.ContentIsMask} />
</button>
_destroyDraft: =>
Actions.deleteSelection()
module.exports = {DraftDeleteButton}

View file

@ -1,13 +1,17 @@
Reflux = require 'reflux'
_ = require 'underscore'
{Message,
Actions,
DatabaseStore,
FocusedContentStore,
DestroyDraftTask,
DatabaseView} = require 'nylas-exports'
module.exports =
DraftListStore = Reflux.createStore
init: ->
@listenTo DatabaseStore, @_onDataChanged
@listenTo Actions.deleteSelection, @_onDeleteSelection
@_view = new DatabaseView Message,
matchers: [Message.attributes.draft.equal(true)],
@ -24,3 +28,16 @@ DraftListStore = Reflux.createStore
containsDraft = _.some(change.objects, (msg) -> msg.draft)
return unless containsDraft
@_view.invalidate()
_onDeleteSelection: ->
selected = @_view.selection.items()
for item in selected
DatabaseStore.localIdForModel(item).then (localId) =>
Actions.queueTask(new DestroyDraftTask(localId))
# if thread.id is focusedId
# Actions.setFocus(collection: 'thread', item: null)
# if thread.id is keyboardId
# Actions.setCursorPosition(collection: 'thread', item: null)
@_view.selection.clear()

View file

@ -11,5 +11,4 @@ class DraftSelectionBar extends React.Component
className="draft-list"
collection="draft" />
module.exports = DraftSelectionBar

View file

@ -3,6 +3,7 @@ React = require "react"
{ComponentRegistry, WorkspaceStore} = require "nylas-exports"
{DownButton, UpButton, ThreadBulkArchiveButton, ThreadBulkStarButton} = require "./thread-buttons"
{DraftDeleteButton} = require "./draft-buttons"
ThreadSelectionBar = require './thread-selection-bar'
ThreadList = require './thread-list'
@ -41,6 +42,9 @@ module.exports =
ComponentRegistry.register ThreadBulkStarButton,
role: 'thread:BulkAction'
ComponentRegistry.register DraftDeleteButton,
role: 'draft:BulkAction'
deactivate: ->
ComponentRegistry.unregister DraftList
ComponentRegistry.unregister DraftSelectionBar
@ -49,3 +53,4 @@ module.exports =
ComponentRegistry.unregister ThreadBulkArchiveButton
ComponentRegistry.unregister DownButton
ComponentRegistry.unregister UpButton
ComponentRegistry.unregister DraftDeleteButton

View file

@ -320,6 +320,7 @@ class Actions
@archiveAndPrevious: ActionScopeWindow
@toggleStarSelection: ActionScopeWindow
@toggleStarFocused: ActionScopeWindow
@deleteSelection: ActionScopeWindow
###
Public: Updates the search query in the app's main search bar with the provided query text.