commit d1c455515e04424d429c87a07aff248a4a767f23
Merge: 72e5536 512f8db
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu Feb 19 18:42:29 2015 -0800
Merge sheet and flexbox components, fonts, and more
Conflicts:
static/workspace-view.less
commit 72e553652f5b26a96155c51e04db46baafb916be
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Feb 18 12:33:08 2015 -0800
Start transitioning to a better set of ui-variables (from bootstrap)
commit ed22fb7fe1c6544af44fae69b83e7e63965ddf4d
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Feb 18 11:55:58 2015 -0800
I hate CSS
commit 512f8db414ceef74712c9d63ba5a67b44cf778c4
Author: Ben Gotow <bengotow@gmail.com>
Date: Mon Feb 16 10:10:44 2015 -0800
Initial work on top toolbar
commit c2d7a0e0a2f6f6ebe254cca24ad0735336d57b70
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu Feb 12 18:47:26 2015 -0800
New UI Prototype interaction / stores for sheets
Summary:
toolbar popup displays
restore caret protection on contenteditable
BAD - can't use cursor saving and restoring with react :(
_findNode works
saves and restores cursor state
contenteditable fixes to support cursor
comments on cursor
initial undo manager
extract undo manager and move up in stack
make undo manager a mixin
adding selection snapshots in composer
fixes in undo manager
selection saves selection states properly
move UndoManager and fix draft
selection state can now select backwards
selection works backwards and click not overridden
change bold class to allow for bolding and unbolding
styling of hover component
can set links in composer
bold and italic clicking works. text seleciton works
show link modal on hover
selection fixes
Test Plan: TODO
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1249
Summary:
fix(streaming): Reconnect every 30 seconds, always
Never accept drafts via any API source
fix(attachments): Fix for changes to open API
Get rid of shouldAbort, just let tasks decide what to do in cleanup
Never let SaveDraftTask run while another SaveDraftTask for same draft is running
Never used IPC
Ignore destroy draft 404
Moving draft store proxy to draft store level
Only block on older saves
Replace SaveDraftTask with SyncbackDraftTask, do saving directly from proxy
Never sync back ;-)
Fix specs
Alter SendDraftTask so that it can send an unsaved draft
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1245
Summary: tiny patch, but with lots of tests for message-item and factored out message-timestamp
Test Plan: Run brand new specs!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1225
Summary:
Initial hooks for reply to message
Per-message actions and reply to message!
Always commit changes before openinig popout composer
Flip message display - newest at bottom like Gmail
WIP specs
New activity bar inspector for deltas
Don't allow long polling connection to restart after end() called
A bit of activity bar refactoring and filter options, clear
Include "On ... someone wrote" in replies / fw
Slightly more robust quoted text removal, detects "On..."
Abort request to really end it
Additional specs for draft store
Test Plan: Run 20 new tests!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1230
Summary:
task store fixes
more task store fixes
check for blocked tasks
retry tasks
add spec descriptions
more test stubs
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1209
Summary:
Eventually, notification stuff should be moved out of InboxAPI into a separate package, and we should have some documented way of watching for "new" things. (Right now it'd be a bit hard to do on the database store...)
Additional fixes:
- AddRemoveTagsTask now optimistically updates the version. Before it would get the new version from the API response. This was bad because it could still cause local changes to be overwritten if you were changing tags really fast.
- AddRemoveTagsTask now takes a threadId, not a thread for consistency with all the rest of our Tasks
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1214
Summary:
fix(autoupdater): Fix bizarrely broken code in autoupdater
fix(urls): Use nilas.com instead of inboxapp
fix(show-main-window): Cmd-1 is the mac standard
fix(autoupdater): TESTS
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1199
Summary:
Use blockquote, apply gmail's styling
Fix in popout composer so the ... button rests at the bottom
Test Plan: Need to figure out the best strategy for tests here - will write tomorrow
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1197
Summary:
Why does message-list have default participants? No other packages do
Component registry warns if mixin component name not found
Clear the component registry between tests and wipe React elements inserted into DOM
Everything should have a displayName, even you ComposerView
Stub all ComponentRegistry dependencies, always
Test Plan: Run all the tests at the same time
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1201
Summary: Populates the unread tag counts using new API feature instead of using the local cache.
Test Plan: No tests for now :-(
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1195
Summary:
fix(http): Support http for API in addition to https throughout
test(attributes): Additional testing for model attributes
fix(versioning): Use version numbers with drafts as well as threads
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1194
Summary:
focuses on draft when replying
focus on to field on new composer
santize html on paste in contentedtiable
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1177
Summary:
- Remove unnecessary log statements
- Use dbPath = null in specs, results in in-memory database
- Only surface promise errors that are Javascript syntax, refernece range or type problems
- Stub out NamespaceStore.current() always
Test Plan: Run tests, see less garbage!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1171
Summary:
fix keymaps and add archive-and-previous
test for star thread
focus bcc and cc
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1174
Summary:
This diff replaces the participant text fields with ones based on TokenizingTextField, a new core
component that handles autocompletion, drag and drop of tokens, etc.
Fix large queries overloading SQLite size limits
New general purpose tokenized text field with token selection, copy paste, etc
Move pre-send logic to the view since DraftStore requests from db, which may not have settled
Tests - still a WIP
Support for contextual menus instead of X
Test Plan: Run new tests. Needs many more, but have higher priority things to fix
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1142
Summary:
There were several issues causing uploading to not work:
# The file upload response came back as a string instead of an Object. Needed to detect and `JSON.parse`
# The `MessageAttachment` component was not available as a package on the popout composer (since it used to be inside of `MessageList`)
# The `message.draft` bit was not set properly causing the DB changes to be ignored
# The actions notifying of `uploadStateChanged` were only being broadcasted in the main window (where the `TaskStore` is) and never making it to the popout composer.
Also keybindings for close window and up & down arrows were fixed.
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1157
Summary:
This diff updates the FileDownloadStore to use it's own internal Download class instead of leveraging the TaskStore (since downloads shouldn't be resumable / serialized to disk anyway). This means things can be tighter and less dependent on Actions. Downloads are now promise-based, so actions like "open file after downloading" can be chained to the end of the Download promise.
The MessageStore now queues downloads for inline attachments when you view the thread, and the MessageItem.cjsx substitutes in local file paths for cid:<CID>.
Test Plan: I made some pretty big changes and did not break any tests. This is a bad sign... Tests forthcoming, but will probably ship this to users tomorrow first.
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1149
Summary: This diff essentially inverts the behavior of native-key-bindings. Instead of opting-in to native-key-bindings, they're applied UNLESS there's an override-key-bindings class. I think this may be a better solution for us since we don't often want to override behavior like Copy and Select All.
Test Plan: No new tests on this one...
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1124
Summary:
Also fixed a bug whereby the thread list item wasn't changing because the
tag change was too deep for React to diff properly
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1132
Summary: Also remove the static email-iframe.css since it's now inline
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1133
Summary:
This diff contains a few major changes:
1. Scribe is no longer used for the text editor. It's just a plain contenteditable region. The toolbar items (bold, italic, underline) still work. Scribe was causing React inconcistency issues in the following scenario:
- View thread with draft, edit draft
- Move to another thread
- Move back to thread with draft
- Move to another thread. Notice that one or more messages from thread with draft are still there.
There may be a way to fix this, but I tried for hours and there are Github Issues open on it's repository asking for React compatibility, so it may be fixed soon. For now contenteditable is working great.
2. Action.saveDraft() is no longer debounced in the DraftStore. Instead, firing that action causes the save to happen immediately, and the DraftStoreProxy has a new "DraftChangeSet" class which is responsbile for batching saves as the user interacts with the ComposerView. There are a couple big wins here:
- In the future, we may want to be able to call Action.saveDraft() in other situations and it should behave like a normal action. We may also want to expose the DraftStoreProxy as an easy way of backing interactive draft UI.
- Previously, when you added a contact to To/CC/BCC, this happened:
<input> -> Action.saveDraft -> (delay!!) -> Database -> DraftStore -> DraftStoreProxy -> View Updates
Increasing the delay to something reasonable like 200msec meant there was 200msec of lag before you saw the new view state.
To fix this, I created a new class called DraftChangeSet which is responsible for accumulating changes as they're made and firing Action.saveDraft. "Adding" a change to the change set also causes the Draft provided by the DraftStoreProxy to change immediately (the changes are a temporary layer on top of the database object). This means no delay while changes are being applied. There's a better explanation in the source!
This diff includes a few minor fixes as well:
1. Draft.state is gone—use Message.object = draft instead
2. String model attributes should never be null
3. Pre-send checks that can cancel draft send
4. Put the entire curl history and task queue into feedback reports
5. Cache localIds for extra speed
6. Move us up to latest React
Test Plan: No new tests - once we lock down this new design I'll write tests for the DraftChangeSet
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1125