_ = require 'underscore' React = require 'react' classNames = require 'classnames' moment = require 'moment' {ListTabular, RetinaImg, MailLabelSet, MailImportantIcon, InjectedComponentSet} = require 'nylas-component-kit' {Thread, FocusedPerspectiveStore, Utils, DateUtils} = require 'nylas-exports' {ThreadArchiveQuickAction, ThreadTrashQuickAction} = require './thread-list-quick-actions' ThreadListParticipants = require './thread-list-participants' ThreadListStore = require './thread-list-store' ThreadListIcon = require './thread-list-icon' # Get and format either last sent or last received timestamp depending on thread-list being viewed TimestampComponentForPerspective = (thread) -> if FocusedPerspectiveStore.current().isSent() rawTimestamp = thread.lastMessageSentTimestamp else rawTimestamp = thread.lastMessageReceivedTimestamp timestamp = DateUtils.shortTimeString(rawTimestamp) {timestamp} subject = (subj) -> if (subj ? "").trim().length is 0 return (No Subject) else if subj.split(/([\uD800-\uDBFF][\uDC00-\uDFFF])/g).length > 1 subjComponents = [] subjParts = subj.split /([\uD800-\uDBFF][\uDC00-\uDFFF])/g for part in subjParts if part.match /([\uD800-\uDBFF][\uDC00-\uDFFF])/g subjComponents.push {part} else subjComponents.push {part} return subjComponents else return subj c1 = new ListTabular.Column name: "★" resolver: (thread) => [ ] c2 = new ListTabular.Column name: "Participants" width: 200 resolver: (thread) => hasDraft = _.find (thread.metadata ? []), (m) -> m.draft if hasDraft
else c3 = new ListTabular.Column name: "Message" flex: 4 resolver: (thread) => attachment = false metadata = (thread.metadata ? []) hasAttachments = thread.hasAttachments and metadata.find (m) -> Utils.showIconForAttachments(m.files) if hasAttachments attachment =
{subject(thread.subject)} {thread.snippet} {attachment} c4 = new ListTabular.Column name: "Date" resolver: (thread) => TimestampComponentForPerspective(thread) c5 = new ListTabular.Column name: "HoverActions" resolver: (thread) =>
]} matching={role: "ThreadListQuickAction"} className="thread-injected-quick-actions" exposedProps={thread: thread}/>
cNarrow = new ListTabular.Column name: "Item" flex: 1 resolver: (thread) => pencil = false attachment = false metadata = (thread.metadata ? []) hasAttachments = thread.hasAttachments and metadata.find (m) -> Utils.showIconForAttachments(m.files) if hasAttachments attachment =
hasDraft = _.find metadata, (m) -> m.draft if hasDraft pencil = # TODO We are limiting the amount on injected icons in narrow mode to 1 # until we revisit the UI to accommodate more icons
{pencil} {attachment} {TimestampComponentForPerspective(thread)}
{subject(thread.subject)}
{thread.snippet} 
module.exports = Narrow: [cNarrow] Wide: [c1, c2, c3, c4, c5]