mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-03-15 17:53:44 +08:00
Summary: By default, the messages in a thread are now filtered to exclude ones moved to trash or spam. You can choose to view those messages by clicking the new bar in the message list. When you view your spam or trash, we only show the messages on those threads that have been marked as spam/trash. Test Plan: Run a couple new tests Reviewers: juan, evan Reviewed By: evan Differential Revision: https://phab.nylas.com/D2662
129 lines
3.8 KiB
CoffeeScript
129 lines
3.8 KiB
CoffeeScript
_ = require 'underscore'
|
|
React = require 'react'
|
|
classNames = require 'classnames'
|
|
|
|
{ListTabular,
|
|
RetinaImg,
|
|
MailLabelSet,
|
|
MailImportantIcon,
|
|
InjectedComponentSet} = require 'nylas-component-kit'
|
|
|
|
{Thread} = require 'nylas-exports'
|
|
|
|
{ThreadArchiveQuickAction,
|
|
ThreadTrashQuickAction} = require './thread-list-quick-actions'
|
|
|
|
{timestamp,
|
|
subject} = require './formatting-utils'
|
|
|
|
ThreadListParticipants = require './thread-list-participants'
|
|
ThreadListStore = require './thread-list-store'
|
|
ThreadListIcon = require './thread-list-icon'
|
|
|
|
|
|
c1 = new ListTabular.Column
|
|
name: "★"
|
|
resolver: (thread) =>
|
|
[
|
|
<ThreadListIcon key="thread-list-icon" thread={thread} />
|
|
<MailImportantIcon
|
|
key="mail-important-icon"
|
|
thread={thread}
|
|
showIfAvailableForAnyAccount={true} />
|
|
<InjectedComponentSet
|
|
key="injected-component-set"
|
|
inline={true}
|
|
containersRequired={false}
|
|
matching={role: "ThreadListIcon"}
|
|
className="thread-injected-icons"
|
|
exposedProps={thread: thread}/>
|
|
]
|
|
|
|
c2 = new ListTabular.Column
|
|
name: "Participants"
|
|
width: 200
|
|
resolver: (thread) =>
|
|
hasDraft = _.find (thread.metadata ? []), (m) -> m.draft
|
|
if hasDraft
|
|
<div style={display: 'flex'}>
|
|
<ThreadListParticipants thread={thread} />
|
|
<RetinaImg name="icon-draft-pencil.png"
|
|
className="draft-icon"
|
|
mode={RetinaImg.Mode.ContentPreserve} />
|
|
</div>
|
|
else
|
|
<ThreadListParticipants thread={thread} />
|
|
|
|
c3 = new ListTabular.Column
|
|
name: "Message"
|
|
flex: 4
|
|
resolver: (thread) =>
|
|
attachment = []
|
|
if thread.hasAttachments
|
|
attachment = <div className="thread-icon thread-icon-attachment"></div>
|
|
|
|
<span className="details">
|
|
<MailLabelSet thread={thread} />
|
|
<span className="subject">{subject(thread.subject)}</span>
|
|
<span className="snippet">{thread.snippet}</span>
|
|
{attachment}
|
|
</span>
|
|
|
|
c4 = new ListTabular.Column
|
|
name: "Date"
|
|
resolver: (thread) =>
|
|
<span className="timestamp">{timestamp(thread.lastMessageReceivedTimestamp)}</span>
|
|
|
|
c5 = new ListTabular.Column
|
|
name: "HoverActions"
|
|
resolver: (thread) =>
|
|
<div className="inner">
|
|
<InjectedComponentSet
|
|
key="injected-component-set"
|
|
inline={true}
|
|
containersRequired={false}
|
|
children=
|
|
{[
|
|
<ThreadTrashQuickAction key="thread-trash-quick-action" thread={thread} />
|
|
<ThreadArchiveQuickAction key="thread-archive-quick-action" thread={thread} />
|
|
]}
|
|
matching={role: "ThreadListQuickAction"}
|
|
className="thread-injected-quick-actions"
|
|
exposedProps={thread: thread}/>
|
|
</div>
|
|
|
|
cNarrow = new ListTabular.Column
|
|
name: "Item"
|
|
flex: 1
|
|
resolver: (thread) =>
|
|
pencil = []
|
|
attachment = []
|
|
hasDraft = _.find (thread.metadata ? []), (m) -> m.draft
|
|
if thread.hasAttachments
|
|
attachment = <div className="thread-icon thread-icon-attachment"></div>
|
|
if hasDraft
|
|
pencil = <RetinaImg name="icon-draft-pencil.png" className="draft-icon" mode={RetinaImg.Mode.ContentPreserve} />
|
|
|
|
<div>
|
|
<div style={display: 'flex', alignItems: 'center'}>
|
|
<ThreadListIcon thread={thread} />
|
|
<ThreadListParticipants thread={thread} />
|
|
{pencil}
|
|
<span style={flex:1}></span>
|
|
{attachment}
|
|
<span className="timestamp">{timestamp(thread.lastMessageReceivedTimestamp)}</span>
|
|
</div>
|
|
<MailImportantIcon
|
|
thread={thread}
|
|
showIfAvailableForAnyAccount={true} />
|
|
<div className="subject">{subject(thread.subject)}</div>
|
|
<div className="snippet-and-labels">
|
|
<div className="snippet">{thread.snippet} </div>
|
|
<div style={flex: 1, flexShrink: 1}></div>
|
|
<MailLabelSet thread={thread} />
|
|
</div>
|
|
</div>
|
|
|
|
module.exports =
|
|
Narrow: [cNarrow]
|
|
Wide: [c1, c2, c3, c4, c5]
|