diff --git a/internal_packages/account-sidebar/lib/account-sidebar-store.coffee b/internal_packages/account-sidebar/lib/account-sidebar-store.coffee index b1dcf74db..d349eac97 100644 --- a/internal_packages/account-sidebar/lib/account-sidebar-store.coffee +++ b/internal_packages/account-sidebar/lib/account-sidebar-store.coffee @@ -89,7 +89,7 @@ AccountSidebarStore = Reflux.createStore return unless namespace DatabaseStore.count(Message, draft: true).then (count) => - @localDraftsTag.unreadCount = count + # Todo: Display Draft Unread Count @trigger(@) _refetchFromAPI: -> diff --git a/internal_packages/composer/stylesheets/composer.less b/internal_packages/composer/stylesheets/composer.less index c46300042..8148cc5d7 100644 --- a/internal_packages/composer/stylesheets/composer.less +++ b/internal_packages/composer/stylesheets/composer.less @@ -87,7 +87,7 @@ } .tokenizing-field.to { - padding-right: 120px; + padding-right: 160px; } input, textarea, div[contenteditable] { @@ -282,6 +282,8 @@ body.is-blurred .composer-inner-wrap .tokenizing-field .token { .participant { white-space: nowrap; text-overflow: ellipsis; + overflow: hidden; + .participant-primary { font-weight: @font-weight-semi-bold; } diff --git a/internal_packages/message-templates/stylesheets/message-templates.less b/internal_packages/message-templates/stylesheets/message-templates.less index de20db960..70c433981 100755 --- a/internal_packages/message-templates/stylesheets/message-templates.less +++ b/internal_packages/message-templates/stylesheets/message-templates.less @@ -6,7 +6,7 @@ .template-picker .menu { .content-container { height:150px; - overflow:scroll; + overflow-y:scroll; } } diff --git a/internal_packages/thread-list/lib/thread-list.cjsx b/internal_packages/thread-list/lib/thread-list.cjsx index ea85006ea..a55f309d7 100644 --- a/internal_packages/thread-list/lib/thread-list.cjsx +++ b/internal_packages/thread-list/lib/thread-list.cjsx @@ -23,12 +23,17 @@ ThreadList = React.createClass lastMessageType = (thread) -> myEmail = NamespaceStore.current()?.emailAddress + msgs = thread.metadata - return 'unknown' unless msgs and msgs instanceof Array and msgs.length > 0 + return 'unknown' unless msgs and msgs instanceof Array + + msgs = _.filter msgs, (m) -> m.isSaved() msg = msgs[msgs.length - 1] + return 'unknown' unless msgs.length > 0 + if thread.unread return 'unread' - else if msg.from[0].email isnt myEmail + else if msg.from[0].email isnt myEmail or msgs.length is 1 return 'other' else if Utils.isForwardedMessage(msg) return 'forwarded' diff --git a/src/flux/stores/focused-content-store.coffee b/src/flux/stores/focused-content-store.coffee index fa08cd44c..9b370ceab 100644 --- a/src/flux/stores/focused-content-store.coffee +++ b/src/flux/stores/focused-content-store.coffee @@ -4,7 +4,6 @@ NamespaceStore = require './namespace-store' WorkspaceStore = require './workspace-store' Actions = require '../actions' Thread = require '../models/thread' -MarkThreadReadTask = require '../tasks/mark-thread-read' AddRemoveTagsTask = require '../tasks/add-remove-tags' module.exports = @@ -42,11 +41,8 @@ FocusedContentStore = Reflux.createStore @_focused[collection] = item @_keyboardCursor[collection] = item if item - if item && item instanceof Thread && item.isUnread() - Actions.queueTask(new MarkThreadReadTask(item)) - @trigger({ impactsCollection: (c) -> c is collection }) - + _onWorkspaceChange: -> keyboardCursorEnabled = WorkspaceStore.layoutMode() is 'list' diff --git a/src/flux/stores/message-store.coffee b/src/flux/stores/message-store.coffee index 18ff6c818..d34eebe75 100644 --- a/src/flux/stores/message-store.coffee +++ b/src/flux/stores/message-store.coffee @@ -1,9 +1,11 @@ Reflux = require "reflux" Actions = require "../actions" Message = require "../models/message" +Thread = require "../models/thread" DatabaseStore = require "./database-store" NamespaceStore = require "./namespace-store" FocusedContentStore = require "./focused-content-store" +MarkThreadReadTask = require '../tasks/mark-thread-read' async = require 'async' _ = require 'underscore-plus' @@ -19,7 +21,7 @@ MessageStore = Reflux.createStore @_items threadId: -> @_thread?.id - + thread: -> @_thread itemsExpandedState: -> @@ -49,12 +51,18 @@ MessageStore = Reflux.createStore @listenTo Actions.toggleMessageIdExpanded, @_onToggleMessageIdExpanded _onDataChanged: (change) -> - return unless change.objectClass == Message.name return unless @_thread - inDisplayedThread = _.some change.objects, (obj) => - obj.threadId == @_thread.id - return unless inDisplayedThread - @_fetchFromCache() + + if change.objectClass is Message.name + inDisplayedThread = _.some change.objects, (obj) => obj.threadId is @_thread.id + if inDisplayedThread + @_fetchFromCache() + + if change.objectClass is Thread.name + updatedThread = _.find change.objects, (obj) => obj.id is @_thread.id + if updatedThread + @_thread = updatedThread + @_fetchFromCache() _onFocusChanged: (change) -> focused = FocusedContentStore.focused('thread') @@ -79,10 +87,16 @@ MessageStore = Reflux.createStore @trigger() + _markAsReadIfNecessary: -> + if @_thread && @_thread.isUnread() + Actions.queueTask(new MarkThreadReadTask(@_thread)) + _fetchFromCache: (options = {}) -> return unless @_thread loadedThreadId = @_thread.id + @_markAsReadIfNecessary() + query = DatabaseStore.findAll(Message, threadId: loadedThreadId) query.include(Message.attributes.body) query.evaluateImmediately() diff --git a/static/components/list-tabular.less b/static/components/list-tabular.less index 0884945c7..062366132 100644 --- a/static/components/list-tabular.less +++ b/static/components/list-tabular.less @@ -71,7 +71,7 @@ position: absolute; height: 100%; width: 100%; - overflow: scroll; + overflow-y: scroll; .list-item { font-size: @font-size-base;