mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-14 21:57:55 +08:00
f2e7ea4c4c
Summary: Add reminders plugin which lets you set reminder if you don't get a reply for a message within a specified time in the future Test Plan: TODO Reviewers: halla, bengotow, evan Reviewed By: halla, bengotow, evan Differential Revision: https://phab.nylas.com/D3356
68 lines
1.9 KiB
CoffeeScript
68 lines
1.9 KiB
CoffeeScript
_ = require 'underscore'
|
|
React = require 'react'
|
|
{DraftHelpers,
|
|
Actions,
|
|
Thread,
|
|
ChangeStarredTask,
|
|
ExtensionRegistry,
|
|
AccountStore} = require 'nylas-exports'
|
|
|
|
class ThreadListIcon extends React.Component
|
|
@displayName: 'ThreadListIcon'
|
|
@propTypes:
|
|
thread: React.PropTypes.object
|
|
|
|
_extensionsIconClassNames: =>
|
|
return ExtensionRegistry.ThreadList.extensions()
|
|
.filter((ext) => ext.cssClassNamesForThreadListIcon?)
|
|
.reduce(((prev, ext) => prev + ' ' + ext.cssClassNamesForThreadListIcon(@props.thread)), '')
|
|
.trim()
|
|
|
|
_iconClassNames: =>
|
|
if !@props.thread
|
|
return 'thread-icon-star-on-hover'
|
|
|
|
extensionIconClassNames = @_extensionsIconClassNames()
|
|
if extensionIconClassNames.length > 0
|
|
return extensionIconClassNames
|
|
|
|
if @props.thread.starred
|
|
return 'thread-icon-star'
|
|
|
|
if @props.thread.unread
|
|
return 'thread-icon-unread thread-icon-star-on-hover'
|
|
|
|
msgs = @_nonDraftMessages()
|
|
last = msgs[msgs.length - 1]
|
|
|
|
if msgs.length > 1 and last.from[0]?.isMe()
|
|
if DraftHelpers.isForwardedMessage(last)
|
|
return 'thread-icon-forwarded thread-icon-star-on-hover'
|
|
else
|
|
return 'thread-icon-replied thread-icon-star-on-hover'
|
|
|
|
return 'thread-icon-none thread-icon-star-on-hover'
|
|
|
|
_nonDraftMessages: =>
|
|
msgs = @props.thread.__messages
|
|
return [] unless msgs and msgs instanceof Array
|
|
msgs = _.filter msgs, (m) -> m.serverId and not m.draft
|
|
return msgs
|
|
|
|
shouldComponentUpdate: (nextProps) =>
|
|
return false if nextProps.thread is @props.thread
|
|
true
|
|
|
|
render: =>
|
|
<div className="thread-icon #{@_iconClassNames()}"
|
|
title="Star"
|
|
onClick={@_onToggleStar}></div>
|
|
|
|
_onToggleStar: (event) =>
|
|
task = new ChangeStarredTask(thread: @props.thread, starred: !@props.thread.starred)
|
|
Actions.queueTask(task)
|
|
|
|
# Don't trigger the thread row click
|
|
event.stopPropagation()
|
|
|
|
module.exports = ThreadListIcon
|