From 3f3ec441ae8ebb884c5899e8b4778560ac9d3263 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Tue, 8 Sep 2015 10:53:07 -0700 Subject: [PATCH] feat(important): Improtant flags you can enable optionally for Gmail accounts Summary: Fixes T3477 Test Plan: Tests are forthcoming Reviewers: dillon, evan Reviewed By: evan Maniphest Tasks: T3477 Differential Revision: https://phab.nylas.com/D1990 --- exports/nylas-component-kit.coffee | 1 + .../message-list/lib/message-list.cjsx | 8 ++- .../stylesheets/message-list.less | 6 +- .../lib/tabs/preferences-general.cjsx | 21 ++++++- .../thread-list/lib/thread-list-icon.cjsx | 2 +- .../thread-list/lib/thread-list.cjsx | 14 +++-- .../thread-list/stylesheets/thread-list.less | 32 +++++++++- src/components/mail-important-icon.cjsx | 55 ++++++++++++++++++ src/config-schema.coffee | 3 + src/flux/models/account.coffee | 3 + src/flux/stores/category-store.coffee | 46 +++++++++++---- static/components/extra.less | 20 +++++++ .../important/Icon-Important-Active@2x.png | Bin 0 -> 249887 bytes .../important/Icon-Important-Hover@2x.png | Bin 0 -> 249862 bytes .../Icon-Important-HoverActive@2x.png | Bin 0 -> 249934 bytes 15 files changed, 188 insertions(+), 23 deletions(-) create mode 100644 src/components/mail-important-icon.cjsx create mode 100644 static/images/important/Icon-Important-Active@2x.png create mode 100644 static/images/important/Icon-Important-Hover@2x.png create mode 100644 static/images/important/Icon-Important-HoverActive@2x.png diff --git a/exports/nylas-component-kit.coffee b/exports/nylas-component-kit.coffee index 16a03ce7f..67caa8066 100644 --- a/exports/nylas-component-kit.coffee +++ b/exports/nylas-component-kit.coffee @@ -33,6 +33,7 @@ class NylasComponentKit @loadFrom "MailLabel", "mail-label" @loadFrom "LabelColorizer", "mail-label" + @load "MailImportantIcon", 'mail-important-icon' @loadFrom "FormItem", "generated-form" @loadFrom "GeneratedForm", "generated-form" diff --git a/internal_packages/message-list/lib/message-list.cjsx b/internal_packages/message-list/lib/message-list.cjsx index 3f2c5c93d..cae8fbd1b 100755 --- a/internal_packages/message-list/lib/message-list.cjsx +++ b/internal_packages/message-list/lib/message-list.cjsx @@ -20,6 +20,7 @@ MessageItemContainer = require './message-item-container' RetinaImg, InjectedComponentSet, MailLabel, + MailImportantIcon, InjectedComponent} = require('nylas-component-kit') class MessageListScrollTooltip extends React.Component @@ -218,13 +219,18 @@ class MessageList extends React.Component _renderSubject: -> + subject = @state.currentThread?.subject + subject = "(No Subject)" if not subject or subject.length is 0 +
- {@state.currentThread?.subject} + + {subject} {@_renderLabels()}
_renderLabels: => labels = @state.currentThread.sortedLabels() + labels = _.reject labels, (l) -> l.name is 'important' labels.map (label) => @_onRemoveLabel(label) }/> diff --git a/internal_packages/message-list/stylesheets/message-list.less b/internal_packages/message-list/stylesheets/message-list.less index f7ba6a232..db7770840 100644 --- a/internal_packages/message-list/stylesheets/message-list.less +++ b/internal_packages/message-list/stylesheets/message-list.less @@ -68,6 +68,7 @@ display: flex; flex-direction: column; position: relative; + background: @background-secondary; width: 100%; height: 100%; @@ -83,6 +84,10 @@ -webkit-user-select: text; line-height: @font-size-large * 1.8; } + .mail-important-icon { + margin-right:@spacing-half; + margin-bottom:2px; + } .message-subject { font-size: @font-size-large; color: @text-color; @@ -109,7 +114,6 @@ flex: 1; opacity:0; transition: opacity 0s; - background: @background-secondary; } .messages-wrap.ready { opacity:1; diff --git a/internal_packages/preferences/lib/tabs/preferences-general.cjsx b/internal_packages/preferences/lib/tabs/preferences-general.cjsx index da2301e17..a527c34cd 100644 --- a/internal_packages/preferences/lib/tabs/preferences-general.cjsx +++ b/internal_packages/preferences/lib/tabs/preferences-general.cjsx @@ -1,7 +1,7 @@ React = require 'react' _ = require 'underscore' {RetinaImg, Flexbox} = require 'nylas-component-kit' -{LaunchServices} = require 'nylas-exports' +{LaunchServices, AccountStore} = require 'nylas-exports' class PreferencesGeneral extends React.Component @displayName: 'PreferencesGeneral' @@ -22,15 +22,30 @@ class PreferencesGeneral extends React.Component @setState(defaultClient: true) @_services.registerForURLScheme('mailto') + toggleShowImportant: (event) => + @props.config.toggle('core.showImportant') + event.preventDefault() + + _renderImportanceOptionElement: => + return false unless AccountStore.current().usesImportantFlag() + importanceOptionElement =
+ + +
+ render: =>
-
+
-
+ {@_renderImportanceOptionElement()} + +
Delay for marking messages as read: