Summary:
- You can now paste Ben Imposter (imposter@nilas.com).
- You can now paste an email and we look up a matching name in the Contact Store
Test Plan: Run glorious new specs
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1378
Summary:
Expose the animation coordinator in Nilas-exports, use in more places
Provide a way for queries to individually bypass waiting (messages query when opening thread)
Test Plan: No new tests to see here yet
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1376
Summary: If state.selectedId is null, or otherwise cannot find item, don't throw exception
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1373
Summary:
A change in the spec caused an error when message metatdata wasn't
available. The specs were also not updated to reflect the change.
fix thread list participants spec
fix thread list spec
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1372
Summary: This one is a bit interesting. We want to allow the user to view "All Mail", which is essentially "threads, with no tags query whatsoever." Rather than try to make `null` a valid selected tag Id, I used `*` as a "magic" tag id which is interpreted by the ThreadStore to mean "no tags where clause." Definitely a hack, but simpler than trying to make the account sidebar properly select "all mail" when selectedTagId = null.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1360
Summary: When we get unread messages, grab their threads and then make sure they're in the inbox before notifying.
Test Plan: See updated specs!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1361
Summary:
Atom provides a ContextualMenuManager which auto-generates contextual menus based on CSS rules, which fire commands. This is conceptually cool since it allows for extendable contextual menus, but A) it uses commands and B) it doesn't play nicely with React components.
This diff removes this manager object completely. Instead, React components can create contextual menus for themselves and dispatch actions / make local changes as they see fit.
If we want to allow people to extend our contextual menus, we can come up with a new solution that is not based on them having a `cson` file referencing a CSS Selector string that they don't own, and using strings for everything.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1362
Summary:
When you're typing at the end of the composer, then the composer should
look like it's scrolling along with you.
When you're typing in the middle of the composer, if the footer
inforamtion scrolls past the end of the page, then that's fine.
When the selection changes, the contenteditable component now caches
whether or not the selection is at the end of the content. It has to do it
at this point, otherwise the cloned, cached DOM nodes of the saved
selection are not the same nodes that will show up in the future.
Whether the cursor is at the end is queried by the composer on a body
change. If it is, then the composer expects a callback from its parent
(the message list), to call to update the scroll position.
The message list immediately updates the scroll position to move the
bottom of the composer to the bottom of the message-wrap window.
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1366
Summary:
Freeze threads on their way out of the ThreadStore
Don't add an unread attribute to contacts by accident...
Don't pass inline functions as props that are looked at by _isEqual
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1367
Summary:
Pending issues:
- As you're typing, Atom Shell says the word you're currently typing is misspelled until you finish it. I will need to patch Atom Shell to fix this.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1358
Summary:
The issue was that when selecting a thread id, it was not loaded in the
current list of items in the ThreadList and failing to come up.
The notifications now pass a property that the AccountSidebarStore listens
for to indicate what tag we think is most likely to contain the thread
that we're directly trying to access.
Eventually the correct data set may be loaded that contains the thread we
want. In the meantime, the requested selectedThreadId may or may not
resolve to an actual selectedThread object. If we detect that the
requested thread came into scope, we trigger another action to notify
everyone that the thread is now available. We also pass along a force
flag since this is a case when the requested thread id hasn't changed
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1353
Summary:
If the last message was sent by you, and you reply to it, you probably
want to talk to you the most recent people you tried to email.
Now with test coverage :)
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1356
Summary:
Now all elements by default have selection set to inherit with the root
level body object set to no selection.
This makes everything (except input elements) not selectable by default.
You can explicitly set the css class or use the new `.selectable` class.
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1355
Summary:
ThreadStore should be done loading as soon as threads are available
SearchSuggestionStore should use ContactsStore for contact results
Contact Store should not "filter all, take 10" it should only filter until it has 10. It should also check against "Ben Gotow" as well as "Ben" and "Gotow", so I can type "Ben Go"
Sometimes participants are "Ben Gotow <ben@g.com>", "ben@g.com". If we get zero contacts after removing Me, put "Me" back in...
Fix "Update Available" notification, broken reference to `atom.views.getView(atom.workspace)`
A bit more debugging around cursors. Need to handle this case soon.
Only use atomWorkspace if it exists.
Fix for dragging next to / around toolbar window controls
Consolidate the display of Contacts in menus into a single MenuItem subclass
Update Template Popover styling
fetchFromCache should only remove thread loading indicator *IF* it found results in the cache. Doh...
Give the thread list "Name" column a fixed width (mg)
Better styling of message list collapsed mode, rage against user selection and cursor: pointer
Occasionally admin.inboxapp.com returns bogus data
Sebaastian feedback on thread list
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1350
Summary:
This diff uses the new ?expanded=true threads request to fetch threads and the messages inside them at the same time. The messages from this endpoint don't contain bodies. Message bodies have been moved to a new "secondary attribute" type, which can be optionally requested when making queries. This allows us to 1) quickly fetch messages without worrying about MBs of JSON, 2) update messages without updating their bodies, and 3) avoid calls to /messages?thread_id=123. The new message store fetches just the items it wants to display in expanded mode, and we'll show snippets for the rest.
Fix up forwarded message
Approach: Thread.messageMetadata
join approach WIP
join approach complete
"" || null = null. OMG.
Make spinner a bit smarter, use code delays and not css delays
Search suggestion store should only show first 10 matches
Msg collapsing, refactored msg store that will fetch individual messages that are marked as expanded, set loaded = true when it's all done
Test Plan: Tests coming soon. The query refactoring here broke a lot of tests...
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1345
Summary:
quoted text add and remove at filter level
fix double space quoted text issue when replying to message
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1341
Summary:
If you open a message and logout, and log-in to a new account, upon successfu
login you see a blank page instead of the thread list view. This makes the default
edgehill state to return to the root sheet video upon logout
Test Plan: none
Reviewers: bengotow, evan
Reviewed By: evan
Subscribers: evan
Differential Revision: https://review.inboxapp.com/D1346
Summary: re-display information on re-entry of thread
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1340
Summary:
reply text now scrolls to bottom on new draft
tests for reply type
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1338
Summary:
Message list can be narrower
Account sidebar is narrower
Never open new windows on single click
Blue send button
Clean up cruft from draft deletion
Render composer empty, setProps when draft populated
Use new `pristine` attribute to discard un-changed new drafts
_addToProxy needs deep equals to prevent "save to = [], cc = []"
Mark as read on click, not afterwards
Allow toolbar / sheet items to style based on the workspace mode
specs covering draft unloading / behavior of cleanup
Always, always reset mode to spec after each test
New tests for destroy draft functionality
Test Plan: Run a handful of new tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1335