Commit graph

2001 commits

Author SHA1 Message Date
Ben Gotow 523ed4b316 feat(thread-list): Inifite scrolling, powered by new DatabaseView, InboxSyncWorker
Summary:
NamespaceStore needs to be more careful about triggering unnecessarily

ThreadListParticipants should use minimum set of <span> tags, not one per name

FocusedTagStore triggers only when the tag has actually changed

New InboxSyncWorker is responsible for fetching contacts, calendars, threads

Update the draft list to look like the thread list

ThreadStore now uses a "Database View" to vend items, which will free it up to focus on things like selection soon. The DatabaseView handles pagination and maintains a cache of items in a "retained range" the view needs. It also abstracts the...

..."thread metadata" concept into a general purpose pattern

Thread-list package implements SearchView to match the DatabaseView. Instead of fetching items from the database it uses the search API

Update existing specs

Bug fix

Specs for focused stores

New specs!

Pad search range so we prefetch the next pages

Clear the scroll offset if the view is changed (between tabs)

Test Plan: Run 58 new tests with 110 new assertions!

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1398
2015-04-06 11:46:20 -07:00
Ben Gotow 622688e1ef [api] Move from nilas -> nylas for endpoints 2015-04-06 10:15:36 -07:00
Ben Gotow 4497de634e fix(analytics): Add Mixpanel alias, don't store @id locally 2015-04-03 18:51:19 -07:00
Ben Gotow 402e481b31 fix(win32/linux) Quit when the user closes the last window. Was broken because of hidden windows
Test Plan: Run on win32/linux

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1386
2015-04-03 10:08:12 -07:00
Ben Gotow eb27c7cd1b fix(message-list): Revert changes causing message list to appear before content ready and scrolled 2015-03-31 17:23:16 -07:00
Ben Gotow d15b5080fb fix(stores): FocusedThreadStore, FocusedTagStore, speed improvements
Summary:
ThreadStore is now in the thread-list package.

Account sidebar no longer has random stuff dealing with search, no longer maintains selection apart from FocusedTagStore

Thread nav buttons are in the thread package

Account sidebar pulls selection from FocusedTagStore, no longer fires an Action to select Inbox, which was weird

Thread store is in thread-list package. No longer has any selection concept -> moved to FocusedThreadStore. Also looks at database changes to do "shallow" updates when only threads and not messages have changed, or when only messages of a few...

...threads have changed.

WorkspaceStore now handles both pushing AND popping the thread sheet. So all sheet behavior is here.

ThreadStore => FocusedThreadStore, selectThreadId => selectThread

Include all models in inbox-exports

It actually takes a long time to call Promise.reject because Bluebird generates stack traces. Resolve with false instead (100msec faster!)

Cache the model class map. All the requires take ~20msec per call to this method

ThreadList looks at FocusedThreadStore for selection

FocusedThreadStore, FocusedTagStore

Updated specs

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1384
2015-03-31 17:19:17 -07:00
Evan Morikawa 911d7f961d fix:(specs) for message list 2015-03-31 17:04:10 -07:00
Evan Morikawa 231f31ecf7 refactor(message-list): much faster message list loading
Summary:
custom options with tests

speed changes

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1383
2015-03-31 16:32:14 -07:00
Ben Gotow 4d3e5c4938 fix(participants): Paste contacts with names, and lots of specs
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
2015-03-31 15:54:16 -07:00
Ben Gotow c09d6dba77 fix(animations): Don't process API data while animations are in-flight
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
2015-03-30 18:08:38 -07:00
Ben Gotow 6ebe1118eb Immediately blow up if the user passes incorrect query params
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
2015-03-30 17:25:08 -07:00
Ben Gotow a10f86a3a2 feat(all-mail): Add special case * tag for all mail
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
2015-03-27 16:37:42 -07:00
Ben Gotow d0d96f90f5 feat(unread-notifications): Check that unread messages are in inbox
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
2015-03-27 16:37:13 -07:00
Ben Gotow 23e9d8ccf5 rm(contextual-menu-manager): See details for reasoning
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
2015-03-27 16:36:16 -07:00
Ben Gotow 7c298aa158 fix(performance): Thread-list re-renders too often
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
2015-03-27 16:34:59 -07:00
Ben Gotow 5826d0dd37 fix(displayWindow): Don't display on all selection changes, just when clicking notifications 2015-03-27 15:24:26 -07:00
Ben Gotow cef394b2a3 fix(thread-store): Don't bother fetching if no threadId. Causing ?thread_id= 400 error 2015-03-27 14:21:03 -07:00
Ben Gotow bb38651c44 fix(destroy-draft): Do not throw exception deleting non-existent draft 2015-03-27 14:21:03 -07:00
Ben Gotow a0d2cc1785 feat(spellcheck): Turn on atom spellchecker, new contextual menu
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
2015-03-27 10:12:56 -07:00
Evan Morikawa 5bcefd23ba feat(notifications): can select a thread from any view
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
2015-03-26 22:07:31 -04:00
Evan Morikawa cdfaf5cf77 feat(reply): don't reply to yourself
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
2015-03-26 22:07:21 -04:00
Ben Gotow e5f3f3087b fix(draft-store-proxy): Centralize check for body 2015-03-26 18:28:11 -07:00
Ben Gotow 7e6d5b64d8 fix(logs): Minor tweaks to prevent react logging 2015-03-26 18:25:21 -07:00
Evan Morikawa 3f55979beb feat(threads): in split mode select the first thread if none selected
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1354
2015-03-26 14:46:26 -04:00
Evan Morikawa e728e5990a feat(attachments): forwarded messages get attachments too
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1351
2015-03-25 21:25:08 -04:00
Ben Gotow dff5465931 fix(*) Small visual tweaks and fixes - see summary
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
2015-03-25 18:22:52 -07:00
Ben Gotow 8f2211f6a0 feat(threads): List improvements and message collapsing
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
2015-03-25 12:41:48 -07:00
Evan Morikawa dd9309c626 feat(draft): escape deletes pristine drafts
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
2015-03-25 14:18:07 -04:00
Evan Morikawa dc5941f3f1 feat(archive): archive now pops back to thread list
Summary:
add spec for message toolbar items

add thread list spec

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1344
2015-03-25 14:17:57 -04:00
Kartik Talwar 79ad424849 Logging out while looking at a message returns you to the Root sheet
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
2015-03-25 13:27:13 -04:00
Evan Morikawa 3d75da673b fix(salesforce): salesforce only displays focused contact
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
2015-03-24 17:03:30 -04:00
Evan Morikawa 27345e7719 feat(message-list): nav buttons disable if first or last message
Summary:
fix message list nav buttons

fix buttons

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1332
2015-03-24 10:41:00 -04:00
Ben Gotow 0669468ec0 fix(*): Small fixes for drafts, interface tweaks
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
2015-03-23 16:33:28 -07:00
Ben Gotow d1fec8b789 fix(speed): Mark packages as engine:atom, don't include coffee,cjsx in compiled app 2015-03-20 17:53:11 -07:00
Ben Gotow e1edb2a220 fix(speed): Remove explicit .cjsx extensions from requires 2015-03-20 17:53:11 -07:00
Evan Morikawa 17d175b69b fix(loading): fix utils loading bug 2015-03-20 16:46:44 -07:00
Evan Morikawa 564ecca8e0 feat(sidebar): add more Salesforce states
Summary:
add more Salesforce states

more salesforce sidebar

extract focused contacts into its own store

fullcontact store fixes

extract thread participants to own module

typo

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1326
2015-03-20 16:31:35 -07:00
Ben Gotow b005d0204b fix(lint): Whitespace issue 2015-03-20 16:16:59 -07:00
Ben Gotow 21e8455ef6 refactor(layout): More configuration into WorkspaceStore, less in packages 2015-03-20 14:52:10 -07:00
Ben Gotow eb6cc11a83 feature(templates): Pick templates, fill variable regions, Draft extensions
Summary:
fix(keymappings): Enter to focus item, logout works now

Minor fix for some problems with activity bar

Fix tabindex = 1 where tabindex should be =-1

Remove idgen that was causing footers to be replaced

WIP

Draft store extension hooks

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1320
2015-03-20 10:23:50 -07:00
Evan Morikawa 00631b2e99 feat(sidebar): add FullContact and Salesforce sidebar
Summary:
store not intelligently figures out the most relevant contact

fix primary contact logic

styling on contactstore

can select different people on the sidebar

add salesforce stub

put return statement back in checking for Salesforce Token

salesforce sidebar loads real data now

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1319
2015-03-19 17:21:09 -07:00
Evan Morikawa ffd762a9bc fix(edgehill-server): auth uses GET token param instead of basic auth 2015-03-19 10:28:11 -07:00
Ben Gotow aad21317e5 feat(ui): Updates from March 17th mockups
Summary:
There are two known issues:
- toolbar is not draggable in some areas when in three-pane mode.
- archive button appears over very long subjects. Propose moving this button elsewhere.

WIP

WIP

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1311
2015-03-18 18:21:04 -07:00
Kartik Talwar 015bd62937 Added dequeueMatchingTask action to abort fileUploads
Summary:
Moved dequeing action in the same loop

Added fix to delete multiple files

Test Plan: None

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1314
2015-03-18 21:11:12 -04:00
Evan Morikawa d283cb432b feat(composer): new composer styles
Summary:
tooltip styling

new styled floating toolbar

move buttons to bottom

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1305
2015-03-17 16:19:40 -07:00
Evan Morikawa b020795b3b feat(contacts): pull full list of contacts from API
Summary:
Also allow to search by last name
Add tests for the ContactStore

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1308
2015-03-17 16:19:16 -07:00
Ben Gotow dee14a37b7 fix(message-list): Adds fade-in, fixes jerky scroll offset when viewing messages
Summary:
feat(debugging): Put db query tiemstamps in js timelines

Mark as read *after* you stop looking at a message, to avoid pointless repaint while looking

fix specs :'(

Make focus() do something smart if not provided a field name

Stop doing the partial load / full load from cache. Slower, but also means we can evaluate "correct" scroll offset in one pass

refactor message-list to fade in after load. simplifies scroll logic

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1306
2015-03-17 12:11:34 -07:00
Evan Morikawa 0cc1457d08 fix(threadlist): can click already-selected thread to re-open 2015-03-16 16:17:22 -07:00
Ben Gotow 8d0ec33b3c fix(logout): Quick fix for infinite logout issue 2015-03-16 13:42:20 -07:00
Ben Gotow b43a79a75b fix(atom): Requiring react breaking build 2015-03-13 17:51:42 -07:00
Evan Morikawa 809033c601 feat(analytics) add Mixpanel
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1299
2015-03-13 20:05:55 -04:00
Ben Gotow 6b270734ef feat(title-bar): Custom titlebar in main app window (darwin-only)
Summary: Only applies to the main window. Will be applied to secondary windows like the composer when design decides whether that window will have a toolbar. (white or gray at the top?)

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1298
2015-03-13 17:02:46 -07:00
Evan Morikawa 02439f3a28 feat(composer): show quoted text when forwarding messages
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1291
2015-03-13 16:17:18 -04:00
Ben Gotow c301dcfbb1 feat(mode-switch): New layout designed for small form factors
Summary:
feat(mode-switch): almost working

Remove SheetStore in favor of bigger WorkspaceStore

Back button for mode switching

Test Plan: Tests WIP

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1292
2015-03-13 13:11:24 -07:00
Evan Morikawa 7c9797c706 feat(composer): don't prompt for attachment if in quoted text
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1290
2015-03-13 15:55:52 -04:00
Evan Morikawa 0c2bcd3fba fix(toolbar): slash focuses search & hidden buttons don't act
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1289
2015-03-12 21:47:01 -04:00
Ben Gotow cb59a497d8 fix(react-warnings): Add keys, displayName to React components 2015-03-12 17:55:26 -07:00
Evan Morikawa 033008e036 feat(tooltip): add informational tooltip component
Summary: Add tooltip. To use just add a data-tooltip="plain string"

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1288
2015-03-12 18:09:10 -04:00
Ben Gotow 34facc920f fix(sheets): Move toolbar, re-introduce :Top region, refactor sheet layout
Summary:
Debounce Component Registry trigger to make app launch much more efficient

Allow arbitrary additional attributes to be set on flexbox, resizable-region

Updates to notification styling

Sheet store maintains an array of sheet types3 instead of sheet elements

Search bar and composer new should be globally visible

Toolbar is now in sheet container instead of individual sheet columns

The sheet container monitors sheet column width and manually positions toolbars

Test Plan: No new tests yet - will see if this design sticks first.

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1287
2015-03-12 15:07:38 -07:00
Evan Morikawa 6a03c6a034 feat(composer): blocks multiple sending & lots of tests
Summary: fix in composer sending

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1286
2015-03-12 17:48:56 -04:00
Ben Gotow 818bca892c fix(menu): Fix flashing selection as you type 2015-03-12 11:43:56 -07:00
Ben Gotow 6445febbd9 spec(drafts): Re: -> Fwd: when forwarding, 12 new specs 2015-03-11 15:55:04 -07:00
Ben Gotow 443b3ce642 fix(size): On initial launch, make the window full-screen 2015-03-11 13:53:11 -07:00
Ben Gotow 3d52458e56 refactor(quoted-text): Give withoutQuotedText its own specs 2015-03-11 12:09:29 -07:00
Evan Morikawa 0fb7e2c101 feat(composer): add popout icon and header styles 2015-03-10 18:14:53 -07:00
Ben Gotow 6c6e1f2466 fix(reply/fwd): Fix for quoted text in new messages 2015-03-10 18:07:48 -07:00
Ben Gotow 0c97de1bff feat(onboarding): Make onboarding window taller, stopgap 2015-03-10 18:07:48 -07:00
Evan Morikawa 7d10a3a00d feat(menus): remove unused menu items 2015-03-10 17:52:30 -07:00
Evan Morikawa f875650c27 fix(menu): always auto-select the first item of the dropdown menu 2015-03-10 15:45:37 -07:00
Evan Morikawa 77d9526ecd fix(email): iframe bug and search refreshing if not committed 2015-03-10 15:40:46 -07:00
Evan Morikawa 221817d1e4 fix(send): fix linting error 2015-03-10 15:13:51 -07:00
Evan Morikawa 961680ef34 feat(sending): close immediately and reopen if error
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1276
2015-03-10 14:32:35 -07:00
Evan Morikawa d5eb68ece1 fix(scrolling): scroll to end once. Fix draft deletion 2015-03-10 13:17:47 -07:00
Ben Gotow 46a6e229eb fix(fields): paste multiple emails at a time, even with garbage 2015-03-10 12:06:52 -07:00
Ben Gotow c4c6f7c65a fix(dnd): You can now drag and drop attachments onto drafts 2015-03-10 11:23:31 -07:00
Ben Gotow 682f7efcdc fix(drafts): Don't cc the user on reply-all (specs were broken) 2015-03-10 11:02:46 -07:00
Ben Gotow e42c649e54 fix(sentry): No longer flood sentry with errors sent while running with --dev 2015-03-10 10:42:03 -07:00
Ben Gotow 16cd75a933 feat(activity-bar): Hidden until you show developer tools 2015-03-10 10:36:50 -07:00
Evan Morikawa 282cc40e9a feat(message): change long format timestamp
Summary: Minor UI fixes

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1271
2015-03-10 10:08:04 -07:00
Evan Morikawa 6ec84561c4 feat(composer): popout only closes when message sending succeeds
Summary:
This is a WIP to fix the blatant case of messages dissapearing when
there's an error. It's pending a better through through notification UI

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1270
2015-03-10 09:52:47 -07:00
Ben Gotow 2189f4f2b7 fix(speed): Since we don't have pagination yet, show only 100 threads 2015-03-09 18:36:37 -07:00
Ben Gotow 0944dd60b0 fix(invariant-violation): Don't listen until components are mounted 2015-03-09 18:31:25 -07:00
Ben Gotow 343e592569 feat(draft-list) Refactor thread-list, create draft-list
Summary: Adds the draft list using a refactored list-tabular class. Also fixes several draft bugs that appeared after allowing editing.

Test Plan: Run tests (need to test new ListTabular component ASAP)

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1272
2015-03-09 18:25:53 -07:00
Evan Morikawa b479e099c1 feat(messages): expandable message headers
Summary: feat(messages): expandable message headers

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://review.inboxapp.com/D1267
2015-03-09 11:17:22 -07:00
Ben Gotow 09dc8887b7 fix(logout): atom-workspace not focused breaking logout 2015-03-09 10:06:50 -07:00
Ben Gotow 9362f1e9c5 fix(win32): Hide menu bar of non-main windows 2015-03-06 18:37:06 -08:00
Ben Gotow d55aad9ce9 refactor(toolbar): Toolbar items for messages are back! 2015-03-06 12:03:32 -08:00
Ben Gotow 9e447ad501 refactor(toolbar): Better base for building toolbars 2015-03-06 11:05:25 -08:00
Ben Gotow 3d2a576bf4 fix(images): Resolve bad merge 2015-03-05 21:16:20 -08:00
Ben Gotow d99c8f1a65 fix(long-poll): Turn delta sync back on 2015-03-05 21:15:53 -08:00
Evan Morikawa 7e7f8e5eda Merge branch 'feat-refactor-layout' of github.com:inboxapp/edgehill into feat-refactor-layout
Conflicts:
	src/flux/models/utils.coffee
2015-03-05 19:57:50 -08:00
Ben Gotow 567acfb14b fix(*) minor patches and fixes for specs / ui 2015-03-05 19:09:42 -08:00
Ben Gotow 3c35ef488b rm(workspace): Remove workspace, we don't need it. 2015-03-05 18:49:10 -08:00
Ben Gotow e5975b2acc fix(packages): Update other packages to new UI 2015-03-05 17:56:45 -08:00
Evan Morikawa e49a5e0adc allow removal of cc and bcc fields 2015-03-05 16:38:28 -08:00
Ben Gotow 9e7a180f06 fix(app): Don't actually need application: handlers 2015-03-05 16:31:24 -08:00
Ben Gotow 175db163e9 fix(image-map): Build image map without relative path dependency 2015-03-05 15:59:11 -08:00
Ben Gotow d04951dd61 fix(less): Lint errors preventing successful build 2015-03-05 15:42:38 -08:00
Evan Morikawa a0cbe8606a fix tests 2015-03-05 15:19:05 -08:00
Ben Gotow d8dbe90c97 fix(windows): Windows build changes 2015-03-05 13:19:24 -08:00
Ben Gotow 6ca63fc01c Merge branch 'feat-refactor-layout' of github.com:inboxapp/edgehill into feat-refactor-layout
Conflicts:
	static/components/tokenizing-text-field.less
2015-03-05 10:59:00 -08:00
Ben Gotow cce9eba509 Rename inbox.env to env, because it's not for inbox alone 2015-03-05 10:58:16 -08:00
Evan Morikawa 05c6fc9ecf more composer styling 2015-03-04 18:47:48 -08:00
Ben Gotow a5508e46bc New login flow with mobile user agent set 2015-03-04 18:12:50 -08:00
Ben Gotow ef694d1766 Fix window level commands by putting an atom-workspace back 2015-03-04 15:22:15 -08:00
Ben Gotow 2c1975472b New onboarding 2015-03-04 15:19:51 -08:00
Evan Morikawa 689ca426de styling autocomplete 2015-03-04 14:26:53 -08:00
Evan Morikawa 8f89954fd9 message list styling 2015-03-04 09:49:09 -08:00
Evan Morikawa b61e62c6a3 button and less changes 2015-03-03 18:09:57 -08:00
Evan Morikawa b63aad83f1 more UI variable improvements 2015-03-03 12:24:48 -08:00
Evan Morikawa 0f56d1fcab refactoring ui variables for colors 2015-03-03 12:00:04 -08:00
Ben Gotow 07efd7d432 LESS Tweaks 2015-03-03 09:49:15 -08:00
Ben Gotow 2b19544219 Restoring SearchBar, adding FontAwesome for icons not designed yet 2015-03-03 09:49:15 -08:00
Ben Gotow cabae1db50 New RetinaImg component, images in sidebar 2015-03-03 09:49:15 -08:00
Ben Gotow a2b93f454e Fix & test case for containsQuotedText 2015-03-03 09:49:15 -08:00
Ben Gotow 985aaf285c Make ResizableRegion a core component, not registered with component registry 2015-03-03 09:49:15 -08:00
Ben Gotow d6336dae08 Squashed commit of deeply broken branch
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
2015-03-03 09:49:15 -08:00
Ben Gotow 542c2bd4d7 fix(specs): Indentation issue causing bad code 2015-03-02 15:47:13 -08:00
Evan Morikawa e7868df1ad feat(contenteditable): a React compatible contenteditable
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
2015-03-02 15:33:58 -08:00
Ben Gotow e1fc34a562 fix(drafts): Draft syncing completely disabled to reduce code complexity
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
2015-03-02 11:23:35 -08:00
Ben Gotow 0468cb4b39 feat(drafts) Reply to draft and minor fixes
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
2015-02-24 16:19:47 -08:00
Ben Gotow 10e9b62ab8 fix(sound): Don't play sounds in specs 2015-02-23 15:13:18 -08:00
Evan Morikawa 25acabc3a0 fix(autocomplete): autocomplete dropown can be clicked & selects first 2015-02-22 18:08:04 -08:00
Evan Morikawa bb7909f379 fix(draft): saves silently resolve if draft can't be found 2015-02-22 17:26:34 -08:00
Evan Morikawa 742d38c4ef fix(draft): fix draft not sending if it wasn't saved first 2015-02-20 17:50:39 -08:00
Ben Gotow 344524d259 temp(streaming): Never consume deletions to messages 2015-02-20 14:39:02 -08:00
Ben Gotow 39cdb7abfa temp(streaming): Never consume changes to drafts 2015-02-20 14:34:46 -08:00
Evan Morikawa 132263c38c refactor(tasks): refactor task store
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
2015-02-20 12:24:15 -08:00
Ben Gotow c952ea3b12 feat(notifications): Initial pass at new mail notifications
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
2015-02-20 12:19:34 -08:00
Ben Gotow e8dff2005d fix(streaming): A few minor fixes for login/logout 2015-02-18 17:41:18 -08:00
Ben Gotow a94f9ad2a8 fix(autoupdater): Restore auto update functionality, this time with tests
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
2015-02-18 14:24:34 -08:00
Ben Gotow 165f5045fb feat(quoted-text): Edit quoted text in replies
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
2015-02-18 14:24:16 -08:00
Ben Gotow 651f105740 fix(tests): Clean up after ReactTestUtils, wipe ComponentRegistry between specs
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
2015-02-18 14:09:46 -08:00
Ben Gotow b97f607a6e fix(long-polling): Close streaming connections, wait for changes to stop
Summary: fix(*): Minor onboarding react issue

Test Plan: Run existing tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1208
2015-02-18 13:59:58 -08:00
Ben Gotow f97a1bec22 fix(unread): Use the API instead of the database for unread counts
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
2015-02-16 17:24:23 -08:00
Ben Gotow dc59b876d3 fix(streaming) Use thread/draft version #'s to prevent bad updates
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
2015-02-16 17:22:29 -08:00
Ben Gotow e1b504b1d1 🍴 Removing Text Editor, Project and other source
Summary:
🍴 Removing dot-atom

🍴 Fix specs

Remove more unnecessary files

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1186
2015-02-12 11:40:45 -08:00
Ben Gotow 104267050d fix(specs): Lots of spec improvements. See details
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
2015-02-10 11:36:29 -08:00
Evan Morikawa 637d5928e6 fix(ui): upgrade packages, minor ui/ux fixes
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
2015-02-10 11:10:14 -08:00
Ben Gotow 99ff91be3f Merge branch 'master' of github.com:inboxapp/edgehill 2015-02-09 11:23:14 -08:00
Ben Gotow 6f6b916377 fix(database): Fix missing require that caused Linux to silently fail 2015-02-09 11:23:09 -08:00
Evan Morikawa a48e5ac3ec fix(packages): upgrade package versions to fix io.js bug 2015-02-09 10:29:58 -08:00
Ben Gotow 73b99880fd refactor(*): Remove Atom package dependecies and Atom styles!
Test Plan: Run existing tests

Reviewers: evan

Differential Revision: https://review.inboxapp.com/D1160
2015-02-06 16:57:33 -08:00
Ben Gotow 4f1746503b fix(*): Post-merge cleanup, keymaps, database init issue 2015-02-06 15:09:51 -08:00
Ben Gotow a54f4ed3ba refactor(database): Open only one sqlite connection, run requests from Browser process
Summary: This diff is the beginning of a larger refactor to move lots of stuff to the Browser process!

Test Plan: No tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1156
2015-02-06 14:47:10 -08:00
Ben Gotow e4889b390f refactor(participants): Use DragDropMixin, Menu
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
2015-02-06 14:46:30 -08:00
Evan Morikawa a31c2808a9 fix(composer): make uploading attachments work
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
2015-02-06 17:41:59 -05:00
Ben Gotow db669fd9a9 feature(attachments): Inline attachments, download store does not use tasks
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
2015-02-06 13:13:31 -08:00
Evan Morikawa 4f8366a772 refactor(keymaps): override-key-bindings instead of native-key-bindings
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
2015-02-04 21:31:41 -05:00
Ben Gotow b189afeeaf fix(drafts): Rename files inbox-composer =>composer 2015-02-03 17:16:25 -08:00
Ben Gotow 1e8fd46342 fix(drafts): Various improvements and fixes to drafts, draft state management
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
2015-02-03 16:24:31 -08:00