Commit graph

849 commits

Author SHA1 Message Date
Ben Gotow c1d023a572 Merge pull request #443 from mbilker/fix-message-body-processor
Do not return when original body is null
2015-11-23 14:13:09 -08:00
Ben Gotow 78dd69290d fix(prefs): Move to a sheet rather than a window, use configSchema
Summary:
This diff moves the preferences interface to a sheet in the main window, with the following benefits:
- We can put any sort of React control in it (no ReactRemote)
- It's not strange for the interface to scroll
- Since it can scroll, it's safe to auto-generate preferences for plugins based on their package config schema.

The general tab is now mostly based on the config schema, with the exception of the "Workspace" and "Layout" bits.

The other tabs are still manual, and should be polished more.

Test Plan: No new tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2278
2015-11-23 12:20:51 -08:00
Evan Morikawa 971089aeb0 fix(build): bail if script/bootstrap fails and enhance test output
Have the test output
2015-11-23 14:34:18 -05:00
mbilker 540d3d6033 fix(store): return early if body is not a string 2015-11-23 14:22:53 -05:00
mbilker c20673d3a3 fix(store): do not return when original body is null 2015-11-21 22:08:40 -05:00
Ben Gotow d437e6866f fix(message-bodies): Ensure each message body is processed
Relevant for #436
2015-11-20 18:03:47 -08:00
Ben Gotow d738e1f826 fix(events): Avoid webkitMovement deprecations, fixes #428 2015-11-19 16:17:03 -08:00
Evan Morikawa ff620e1d2f fix(contenteditable): allow valid null events to callbacks 2015-11-19 13:38:19 -05:00
Evan Morikawa 2d3121a91d fix(main): globa.resourcePath now resourcePath 2015-11-18 17:41:00 -08:00
Juan Tejada 0be43f33c9 fix(contenteditable): Fix undefined callback on plugins 2015-11-18 15:29:42 -08:00
Juan Tejada 02deba38c4 fix(composer): Fix several composer issues and refactor Contenteditable
Summary:
  - Fixes T5819 issues
  - Adds ContenteditbalePlugin mechanism to allow extension of Contenteditable
    functionality, and completely removes lifecycleCallbacks from Contenteditable
  - Refactors list functionality outside of Contenteditable and into a plugin
  - Updates ComposerView to apply DraftStoreExtensions through a ContentEditablePlugin
  - Moves spell checking logic outside of Contenteditable into the spellcheck package

Fixes T5824 (atom.assert)
Fixes T5951 (shift-tabbing) bullets

Test Plan: - Unit tests and manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Maniphest Tasks: T5951, T5824, T5819

Differential Revision: https://phab.nylas.com/D2261
2015-11-18 15:22:31 -08:00
Juan Tejada e1aa260597 fix(compile-cache): Add .jsx extension to babel compiler module 2015-11-18 13:22:50 -08:00
Juan Tejada 03523f7db1 fix(compile-cache): Add .jsx extension to be transbiled using babel 2015-11-18 12:35:37 -08:00
Evan Morikawa 0c93cb856f fix(draft): fix showing of incorrect body when pending send
Summary: Fixes T3712

Test Plan: new tests

Reviewers: juan, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3712

Differential Revision: https://phab.nylas.com/D2273
2015-11-18 12:32:07 -08:00
Ben Gotow f8539aa382 🍒(atom): Pull new, cleaner compile cache + index.js 2015-11-17 19:43:08 -08:00
Ben Gotow 0068e7d4a7 fix(specs): Update specs following 0.29.2 > 0.34.3 move 2015-11-17 17:40:06 -08:00
Evan Morikawa 488dff0f90 refactor(env): new NylasEnv global
Converted all references of global atom to NylasEnv

Temporary rename atom.io

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.io/temporaryAtomIoReplacement/g'

atom.config to NylasEnv.config

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.config/NylasEnv.config/g'

atom.packages -> NylasEnv.packages

atom.commands -> NylasEnv.commands atom.getLoadSettings

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.commands/NylasEnv.commands/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getLoadSettings/NylasEnv.getLoadSettings/g'

More common atom methods

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.styles/NylasEnv.styles/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.emitError/NylasEnv.emitError/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.inSpecMode/NylasEnv.inSpecMode/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.inDevMode/NylasEnv.inDevMode/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getWindowType/NylasEnv.getWindowType/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.displayWindow/NylasEnv.displayWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.quit/NylasEnv.quit/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.close/NylasEnv.close/g'

More atom method changes

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.keymaps/NylasEnv.keymaps/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.hide/NylasEnv.hide/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getCurrentWindow/NylasEnv.getCurrentWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.menu/NylasEnv.menu/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getConfigDirPath/NylasEnv.getConfigDirPath/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.isMainWindow/NylasEnv.isMainWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.finishUnload/NylasEnv.finishUnload/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.isWorkWindow/NylasEnv.isWorkWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.showSaveDialog/NylasEnv.showSaveDialog/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.append/NylasEnv.append/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.confirm/NylasEnv.confirm/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.clipboard/NylasEnv.clipboard/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getVersion/NylasEnv.getVersion/g'

More atom renaming

Rename atom methods

More atom methods

Fix grunt config variable

Change atom.cmd to N1.cmd

Rename atom.coffee and atom.js to nylas-env.coffee nylas-env.js

Fix atom global reference in specs manually

Fix atom requires

Change engine from atom to nylas

got rid of global/nylas-env

rename to nylas-win-bootup

Fix onWindowPropsChanged to onWindowPropsReceived

fix nylas-workspace

atom-text-editor to nylas-theme-wrap

atom-text-editor -> nylas-theme-wrap

Replacing atom keyword

AtomWindow -> NylasWindow

Replace Atom -> N1

Rename atom items

nylas.asar -> atom.asar

Remove more atom references

Remove 6to5 references

Remove license exception for atom
2015-11-17 16:41:20 -08:00
Evan Morikawa bab3c18bd4 fix(docs): fix docs so they compile properly. 2015-11-17 15:48:59 -08:00
Ben Gotow 62b8dc2d3a fix(tray): Retina tray icon with template image for dark menu bar mode 2015-11-17 15:36:52 -08:00
Ben Gotow 2f2a80b03a bump(️): Electron 0.29.2 > 0.34.3, Sqlite 3.0.11 > 3.1.1 2015-11-17 15:36:32 -08:00
Ben Gotow 5904be4678 cleanup(*): We do not support devDependencies as a concept 2015-11-16 11:46:36 -08:00
Juan Tejada 36de6e632c fix(tray): Set tray width based on actual unread count text width 2015-11-13 19:30:25 -08:00
Ben Gotow 620f5c949d fix(tray): "Open Inbox" if main window is minimized / hidden 2015-11-13 18:11:44 -08:00
Ben Gotow 6ef0a49c26 fix(keymaps): Small tweaks to fix broken key behaviors
- Reload the menu after changing keymap sets
- Do not allow accelerators in the menu like "z", because they do not go through selector-based command matching and always fire into the window.
- Do not match `cmdctrl` to both `cmd` and `ctrl` on the Mac. Just `cmd`
- Re-order `shift-delete` mapping to `core:cut`, because it causes the menu to have no binding on Mac OS X
2015-11-13 16:05:40 -08:00
Ben Gotow 83510d0cef fix(names): "Olivia" should not be caught by name cleanup
This fixes #393.

The name "Olivia" was being caught in our parser designed to shorten "Mike Kaylor via LinkedIn" to "Mike Kaylor". We now check that "via" is it's own distinct word in the phrase.
2015-11-13 11:42:37 -08:00
Juan Tejada a3346b2338 fix(system-tray): Add sans-serif as fallback font for system tray unread count 2015-11-13 11:00:08 -08:00
Ben Gotow ed585b0d3e fix(mailto): Handle mailto links with newline characters #397
Regex was clipping off the body after the first newline. Fixes #397
2015-11-13 10:58:42 -08:00
Ben Gotow ca0f7a13ec fix(uploads): File uploads shouldn't time out after 15 seconds :/ 2015-11-12 16:53:54 -08:00
Ben Gotow 0650768788 fix(prefs): ReactRemote should call componentWillUnmount 2015-11-09 21:44:33 -08:00
Ben Gotow d23b0fd16c fix(specs): Remove loading cover in spec window 2015-11-09 20:53:17 -08:00
Ben Gotow 1b85eb55ef fix(feedback): Move feedback window creation to app process
Prevents cross-window callbacks that are preventing the app from quitting
2015-11-09 12:15:24 -08:00
Ben Gotow d057e5f67b fix(emitter): Remove warning by increasing max listeners 2015-11-09 12:15:24 -08:00
Evan Morikawa 58873e81ea fix(keymap): run cmdctrl preprocessor on build too 2015-11-09 15:09:04 -05:00
Evan Morikawa 069b1835cd feat(selection): add selection of read, unread, starred, etc
Summary:
Can select all, deselect-all, read, unread, starred, unstarred.

Yes, it's not REALLY select "all", but it uses the items in the current
`retainedRange`. This is actually similar to what gmail does (only selects
on the first page of a 100).

Test Plan: new test

Reviewers: juan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2241
2015-11-09 10:03:55 -05:00
Ben Gotow d12af16583 fix(deps): Remove nodobjc until we re-enable native notifications 2015-11-07 18:15:40 -08:00
Ben Gotow e64e6e526d fix(babel): Roll back to babel@5, see details
- move babelrc to static so that it can be used during the build process and also whenever the app is transpiling things on the fly.
- move babel back to version 5, which is compatible with `apm install`. (babel 6 seems to require the "dedupe" behavior of NPM3)
- update harmony-collections to use an unpublished commit that fixes the "WeakMap is not generic" issue
2015-11-07 14:27:18 -08:00
Ben Gotow e87b5700e2 fix(menu): Allow fast-switch between accounts 2015-11-06 18:19:49 -08:00
Ben Gotow 818e1ae986 feat(reading): Disable autoloading of images, opt-in one by one
Summary: This diff implements Gmails "load images, always load images from bengotow@gmail.com" option. Someone asked for it late last night and I figured it'd be fun to add. We also needed to refactor the MessageItem to allow for a GPG plugin - MessageItems now subscribe to the body of the message from the messageBodyProcessor, so in the event that processing rules change, someone can invalidate the processor cache by calling `resetCache()`, and then it recomputes bodies and triggers a refresh of each message body.

Test Plan: Updated existing tests, no new tests for this plugin just yet.

Reviewers: evan, juan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2235
2015-11-06 15:53:21 -08:00
Evan Morikawa d54b1929e9 fix(keymap): use atom-keymap 5.1.11 2015-11-06 15:16:57 -08:00
Evan Morikawa ff188253ab fix(account): fix initial token loading in account store 2015-11-06 14:45:00 -08:00
Evan Morikawa 13c0ffa989 feat(keymap): add cmd+1, cmd+2, etc to quick-select accounts
Fix "unique key" for react props

Fix composer styling bug in popout composer
2015-11-06 14:38:50 -08:00
Evan Morikawa 0f89de362c feat(log): extract reporting and log API failures
Summary: We now log API failures

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2216
2015-11-06 12:20:01 -08:00
Ben Gotow b12354b7c2 fix(win10): Prevent duplicate taskbar items
Fixes #368, #184

Related to #351
2015-11-06 12:11:51 -08:00
Evan Morikawa 451816a183 fix(specs): fix specs 2015-11-06 12:08:32 -08:00
Evan Morikawa 455b418d6f feat(keymap): add new <KeymapHandlers />
Summary:
Refactor keymaps to wrap components with a <KeymapHandlers /> component.
This more Reactful way of declaring keyback handlers prevents us from
needing to subscribe to `atom.commands`

Test Plan: new tests

Reviewers: bengotow, juan

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2226
2015-11-06 11:47:06 -08:00
Ben Gotow 118761d79e perf(db): Lazily deserialize models on the other side of the action bridge
Summary:
We send database `trigger()` events through the ActionBrige to all windows of the app. This means that during initial sync, we're serializing, IPCing and unserializing thousands of models a minute x "N" windows.

This diff converts the payload of the trigger method into an actual class that implements a custom toJSON. It converts the impacted `objects` into a string, and doesn't deserialize them until it's asked.

Bottom line: this means that in many scenarios, we can avoid creating Contact models, etc. in composer windows only to broadcast them and then gc them.

Test Plan: No new tests yet, but this should definitel be tested. #willfix.

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2236
2015-11-06 11:15:20 -08:00
Juan Tejada d838610290 feat(system-tray): add system-tray package
Summary:
- Updates support for ES6 code inside packages
- Displays system tray icon with unread count on darwin, or with bubble on other platforms
- Uses canvas api to dynamically generate icon image given unread count:
  - Adds CavasUtils.canvasFromImgAndText to do this
- Adds config option to display system tray icon on darwin

Test Plan: Need to write the tests for this.

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2231
2015-11-06 11:12:38 -08:00
Ben Gotow 29b077dbca fix(model): Optimization incompatible with specs, todo 2015-11-05 21:02:13 -08:00
Ben Gotow 4dfffae083 perf(fromJSON): 40% perf increase by fixing "forin not optimized case"
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers
2015-11-05 20:16:06 -08:00
Evan Morikawa a77ba2b15d fix(composer): double-composition events supported 2015-11-05 17:52:21 -08:00
Ben Gotow 595c495f78 disable(notifs): Native notifs causing EXC_BAD_ACCESS in beta 2015-11-05 17:20:13 -08:00
Ben Gotow d0c153590f fix(ship-logs): Do not propogate fs errors (Sentry 6144) 2015-11-04 16:07:15 -08:00
Ben Gotow 716b4ec426 fix(sheet-toolbar): Make robust against mail view null names (Sentry 3861) 2015-11-04 16:04:28 -08:00
Ben Gotow 52ea696810 fix(notifs): Hopefully prevent gc of NodeObjC objects 2015-11-04 15:53:50 -08:00
Evan Morikawa 6d1dbe1dbf fix(composer): support Chinese & others - handle composition events
Summary:
ignores composition event commands until they're done. We then simply
update the new state after that happens.

Some additional refactoring:

- The <Contenteditable /> prop is 'value' instead of 'html' to make it
  look more like a standard React controlled input
- Removed `filters` prop and `footerElements` prop from Contenteditable.
  These could easily be moved into the composer (where they belong).
- Moved contenteditable and a few of its helper classes into their own
  folder.
- Moved `UndoManager` up out of the `flux` folder into `src`. Currently
  undo/redo is only in the composer when all contenteditables should have
  the basic funcionality. Will refactor this later.
- Fix tests

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2211
2015-10-30 20:03:33 -04:00
Ben Gotow 03b7ee664f feat(contextual-menus): Basic cut/copy/paste for all inputs—#161 2015-10-29 21:24:51 -07:00
Ben Gotow 0956c18cab feat(shortcuts): Pageup/dn in message list, shift+pageup/dn in thread list 2015-10-29 20:34:43 -07:00
Ben Gotow 25ffea50f9 perf(message-store): Debounce reload of the message column—#249 2015-10-29 20:20:49 -07:00
Evan Morikawa fa3a2ee631 feat(signatures): add signature support in preferences
Summary:
Adding signature support in preferences

Extracting out DraftStore extensions from the Contenteditable component

Moved Contenteditable to the nylas component kit

Build react remote window selection synchronization.

Test Plan: todo

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2204
2015-10-29 17:20:41 -04:00
Evan Morikawa 6f658d293c doc(task): make methods public and add documentation 2015-10-29 15:11:01 -04:00
Ben Gotow afe77b27fb feat(notifs): Native notifications for Mac OS X, Win coming
Summary: Replaces `new Notification`-based HTML5 notifications with system native notifications on Mac OS X. This allows us to implement the "Reply" button in the notifications. This will also serve as the hook for native Windows notifications, which are unsupported in Chromium.

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2199
2015-10-29 11:23:51 -07:00
Evan Morikawa 4cb05cb14c fix(analytics): remove analytics 2015-10-28 20:06:01 -04:00
Evan Morikawa 1febd56ed5 fix(drafts): only syncback every 30 seconds instead of 5 seconds
This will help prevent API errors from causing multiple drafts to appear
2015-10-28 19:51:46 -04:00
Evan Morikawa 849736fcd5 fix(unread): can mark message as unread in split mode
Summary: Fixes T4835

Test Plan: new tests

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T4835

Differential Revision: https://phab.nylas.com/D2205
2015-10-28 17:50:07 -04:00
Ben Gotow e76adb283c feat(changelog): Link to changelog before and after updates
Summary: Link to the changelog, and add a new notification which appears after updates are installed

Test Plan: No tests to see here..

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2201
2015-10-27 16:48:05 -07:00
Ben Gotow e858eb6ebd rm(aws-sdk): Ship logs via request, eliminate aws-sdk 2015-10-27 16:35:38 -07:00
Ben Gotow 3a5f667a0b fix(files): Not-yet-downloaded files can be opened via double click
Fixes T4840
2015-10-27 11:05:33 -07:00
Ben Gotow 6d7743ae93 fix(workspace): Remember whether sidebar is hidden #190 2015-10-26 10:51:30 -07:00
Ben Gotow 65078fd7d1 fix(fullscreen): On Mac OS X, green window control defaults to fullscreen 2015-10-23 18:30:47 -07:00
Ben Gotow 5d11a1ece9 fix(atom): Prevent cache collisions with Atom 2015-10-23 17:03:41 -07:00
Ben Gotow 7e041be33c fix(drafts): Draft selection / deletion fixes 2015-10-23 16:04:27 -07:00
Ben Gotow 8127e91ef0 fix(change-folder): Show folder name when moving to folder 2015-10-23 14:50:39 -07:00
Evan Morikawa 539e9b3799 fix(archive): can archive and trash from focused message 2015-10-23 14:49:29 -07:00
Evan Morikawa 4390edcc64 fix(windows): fix apm package loading and onboarding styles 2015-10-23 12:18:00 -07:00
Ben Gotow ea23796bf8 fix(onboarding): Do not open plugin folders after install 2015-10-23 11:58:33 -07:00
Ben Gotow ebd98c711a fix(onboarding): Fix size animation, resolves #150 2015-10-23 11:35:13 -07:00
Ben Gotow fb088ad2f9 fix(tasks): Additional fixes 2015-10-22 18:07:59 -07:00
Ben Gotow bf50c01965 fix(tasks): Invalid coffeescript in 092c28d2c0 2015-10-22 17:26:14 -07:00
Ben Gotow 397d2bf694 fix(important): Resilient against invalid AccountStore state (Sentry 4049) 2015-10-22 16:05:33 -07:00
Ben Gotow cb4d3f2e39 fix(drafts): Reveal or focus windows for drafts when already open
Fixes T3883
2015-10-22 16:02:25 -07:00
Ben Gotow a3dbab332e fix(win): When windows are removed, keep ivars in sync 2015-10-22 15:57:34 -07:00
Evan Morikawa ef8e7aaf51 fix(databse): fix memory leak on DatabaseStore.atomically
Summary:
The Promise chain we were creating was never cleared and created a memory
leak. We instead use a `PromiseQueue` to cleanup finished promises.

Also added several more tests and verified that the memory leak is gone
with the Chrome profiler

Test Plan: new tests

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2184
2015-10-22 14:19:39 -07:00
Evan Morikawa cfb4142471 fix(event): remove EventStore
Summary:
The EventStore was really doing nothing, except caching hundreds of MB of
event data unnecessarily in each and every window :(

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2187
2015-10-22 14:14:58 -07:00
Evan Morikawa 4b217ea736 fix(memory): don't return Promise to debounce in ContactStore
Prevents a memory leak where it holds onto a stale references of the
contactCache
2015-10-22 14:10:49 -07:00
Ben Gotow e69da22e5e feat(sidebar): Hierarchical folders/labels in the sidebar, rendering perf
Summary:
Fix label sorting... apparently we just synced them in creation date order

Allow labels / folders to be nested using separators `.`, `/`, and `\`

Allow collapsing of nested labels in sidebar

Add overflow hidden to some core flexboxes, which dramatically reduces repaints because it knows columns will not overflow into other columns

Prevent scroll region contents from re-rendering all the time, not sure why this works

Add test for account sidebar store

Test Plan: Run new test of AccountSidebarStore

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2181
2015-10-22 10:53:57 -07:00
Ben Gotow f3c4c04d00 fix(onboarding): Correct error where token pane is too small 2015-10-22 10:32:20 -07:00
Evan Morikawa b76fd0e578 feat(windows): improve UI for Windows
Remove rounded corners and gradients
2015-10-21 20:32:33 -07:00
Evan Morikawa 1516e3fb8c feat(windows): upgarade preferences UI on Windows 2015-10-21 17:28:52 -07:00
Ben Gotow 6f587d6d98 rm(metadata): MetadataStore is not in use, should be rebuilt
Resolves a request that happens whenver the user starts the app, reported in #108
2015-10-21 14:30:33 -07:00
Ben Gotow 98dca29b49 fix(atom-window): Main window should exit fullscreen when "closed"
Fixes issue #69
2015-10-21 14:07:44 -07:00
Ben Gotow c5cdbc1993 fix(uploads): Display error when uploading >25MB files
Fixes GitHub issue #102
2015-10-21 12:29:07 -07:00
Ben Gotow eba7c62787 fix(category): Consolidate logic around "archive" vs" all" 2015-10-21 11:58:06 -07:00
Evan Morikawa 6c0370d7a8 feat(tooltip): use native tooltip style 2015-10-21 11:27:57 -07:00
Ben Gotow 2878133a09 fix(tasks): SyncbackCategory does not need organizationUnit 2015-10-21 11:07:08 -07:00
Ben Gotow e09d3e3e75 feat(trash): Trash for Gmail, and architectural changes for common tasks
Summary:
This diff centralizes logic for creating common tasks for things like moving to trash, archive, etc. TaskFactory exposes a set of convenience methods and hides the whole "and also remove the current label" business from the user.

This diff also formally separates the concept of "moving to trash" and "archiving" so that "remove" isn't used in an unclear way.

I also refactored where selection is managed. Previously you'd fire some action like archiveSelection and it'd clear the selection, but if you selected some items and used another method to archive a few, they were still selected. The selection is now bound to the ModelView as intended, so if items are removed from the modelView, they are removed from it's attached selection. This means that it shouldn't /technically/ be possible to have selected items which are not in view.

I haven't refactored the tests yet. They are likely broken...

Fix next/prev logic

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2157
2015-10-21 10:38:00 -07:00
Ben Gotow fc252673ab fix(toolbars): Cross disolve toolbar items on a one-off basis
Summary:
This diff removes the timeout transition group from the sheet-toolbar, which was causing toolbar items to fade when columns were opened / closed and they were moved from column to column.

Instead, I'm just animating the message toolbar items, which are one of the few sets of toolbar items that really should fade, and do so as an entire set.

I've also renamed the "sheet-toolbar" animation to "opacity-125ms". I think it'd be cool to create a standard set of these animations, but I didn't see any others it would make sense to create generic names for yet. (The others have weird timings or are bound up inside packages).

Resolves Github #90

Test Plan: No new tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2159
2015-10-21 10:34:14 -07:00
Evan Morikawa 092c28d2c0 fix(tasks): don't continue if dependent task fails
Summary:
Fixes T4291

If I made a final edit to a pre-existing draft and sent, we'd queue a
`SyncbackDraftTask` before a `SendDraftTask`. This is important because
since we have a valid draft `server_id`, the `SendDraftTask` will send by
server_id, not by POSTing the whole body.

If the `SyncbackDraftTask` fails, then we had a very serious issue whereby
the `SendDraftTask` would keep on sending. Unfortunately the server never
got the latest changes and sent the wrong version of the draft. This
incorrect version would show up later when the `/send` endpoint returned
the message that got actually sent.

The solution was to make any queued `SendDraftTask` fail if a dependent
`SyncbackDraftTask` failed.

This meant we needed to make the requirements for `shouldWaitForTask`
stricter, and block if tasks failed.

Unfortunatley there was no infrastructure in place to do this.

The first change was to change `shouldWaitForTask` to `isDependentTask`.
If we're going to fail when a dependent task fails, I wanted the method
name to reflect this.

Now, if a dependent task fails, we recursively check the dependency tree
(and check for cycles) and `dequeue` anything that needed that to succeed.

I chose `dequeue` as the default action because it seemed as though all
current uses of `shouldWaitForTask` really should bail if their
dependencies fail. It's possible you don't want your task dequeued in this
dependency case. You can return the special `Task.DO_NOT_DEQUEUE_ME`
constant from the `onDependentTaskError` method.

When a task gets dequeued because of the reason above, the
`onDependentTaskError` callback gets fired. This gives tasks like the
`SendDraftTask` a chance to notify the user that it bailed. Not all tasks
need to notify.

The next big issue was a better way to determine if a task truely errored
to the point that we need to dequeue dependencies. In the Developer Status
area we were showing tasks that had errored as "Green" because we caught
the error and resolved with `Task.Status.Finished`. This used to be fine
since nothing life-or-death cared if a task errored or not. Now that it
might cause abortions down the line, we needed a more robust method then
this.

For one I changed `Task.Status.Finished` to a variety of finish types
including `Task.Status.Success`. The way you "error" out is to `throw` or
`Promise.reject` an `Error` object from the `performRemote` method. This
allows us to propagate API errors up, and acts as a safety net that can
catch any malformed code or unexpected responses.

The developer bar now shows a much richer set of statuses instead of a
binary one, which was REALLY helpful in debugging this. We also record
when a Task got dequeued because of the conditions introduced here.

Once all this was working we still had an issue of sending old drafts.

If after a `SyncbackDraftTask` failed, now we'd block the send and notify
the users as such. However, if we tried to send again, there was a
separate issue whereby we wouldn't queue another `SyncbackDraftTask` to
update the server with the latest information. Since our changes were
persisted to the DB, we thought we had no changes, and therefore didn't
need to queue a `SyncbackDraftTask`.

The fix to this is to always force the creation of a `SyncbackDraftTask`
before send regardless of the state of the `DraftStoreProxy`.

Test Plan: new tests. Lots of manual testing

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: mg

Maniphest Tasks: T4291

Differential Revision: https://phab.nylas.com/D2156
2015-10-21 10:33:43 -07:00
Ryan P.C. McQuen 895b77a515 fix email validation
fixes https://github.com/nylas/N1/issues/111
2015-10-21 10:04:22 -07:00
Ben Gotow 1399685415 ci(*): Put builds in subdirectories, better for Squirrel.Win 2015-10-16 17:06:09 -07:00
Ben Gotow 31991d370e fix(config): new mail sounds on by default, change config keypath
unread-notifications.sounds => core.notifications.sounds
2015-10-14 17:11:36 -07:00
Ben Gotow 8c22f6bf65 fix(html-parser): Never blow up, just send us HTML parsing errors 2015-10-12 11:04:27 -07:00
Evan Morikawa 2859baa134 fix(contact): fix bug where malformed contacts threw an error
Summary:
Also added tests to catch the case
Fixes T4290

Test Plan: new tests

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T4290

Differential Revision: https://phab.nylas.com/D2153
2015-10-12 14:03:39 -04:00
Ben Gotow 0ad7a2f716 fix(updater): Check less frequently, stop when update ready to install 2015-10-11 01:58:53 -07:00
Ben Gotow 7ad57680ca fix(contacts): Emails only valid if the entire string is the email. (Sentry 2991) 2015-10-09 14:30:08 -07:00
Ben Gotow a84787859c fix(quoted-html): Fix null reference error, resolves Sentry 3264 2015-10-09 14:12:27 -07:00
Drew Regitsky d3d450105e fix(contacts): move contact rank fetching to sync workers, refactor
Summary:
Fixes bug where contact ranking was not being fetched, and refactors the refreshing
of contact ranks. Moves periodic refreshing of the database-stored ranks to the sync
workers so it occurs in the background, once per account. Refactors JSON cache code
accordingly.

Test Plan: manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2137
2015-10-09 12:40:36 -07:00
Evan Morikawa fb39edd531 Merge pull request #53 from mbilker/travis-update
Travis update
2015-10-09 10:20:37 -07:00
Evan Morikawa 913b00232d Add ChaosMonkey to test misbehaving servers
Summary:
`ChaosMonkey.unleashOnAPI()` will by default cause all API requests to 500

`ChaosMonkey.unleashOnAPI(timeoutMonkey: true)` will cause all API requests
to SOCKETTIMEOUT

`ChaosMonkey.unleashOnAPI(numMonkeys: 10)` will cause the next 10 API
requests to 500

`ChaosMonkey.unleashOnAPI(errorCode: 401, numMonkeys: 10)` will cause the
next 10 API requests to 401.

It must be manually invoked from the console on each window you want the
Monkeys wrecking havok.

It is available on the `window` object as well

This was created to manually test our server failure cases.

Test Plan: manual

Reviewers: drew, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2133
2015-10-09 09:37:56 -07:00
Evan Morikawa dfab406484 Fix contact ranking and add tests
Summary:
Contact ranking is now tested.

There was a bug whereby the RankingsJSONCache would only update in the
workerwindow. This regressed when Contact ranking moved exclusively into
the main window and separate composer windws requested rankings via ipc

Test Plan: New tests

Reviewers: drew, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2134
2015-10-09 09:31:52 -07:00
Matt Bilker 321a010370 fix(whitespace): coffeelint line 19 ends with whitespace 2015-10-07 22:32:28 -04:00
Drew Regitsky 7f0fca9c25 feature(feedback): move feedback to a package, indicator for new msgs
Summary: Move all Intercom feedback code to a package. Change the appearance of the lower right question mark icon when a new intercom message is received (red, with repeating CSS bounce animation). New messages are detected by keeping the intercom window open (after the first time it's opened by the user), and listening for DOM mutations of particular classes.

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: evan

Differential Revision: https://phab.nylas.com/D2125
2015-10-07 13:55:54 -07:00
Dillon Forrest bd7c6441ad Merge pull request #43 from boffbowsh/patch-1
Fix a couple of typos and a syntax error
2015-10-07 10:36:03 -07:00
Ben Gotow 7d6280a864 fix(atom): Never allow the window to be set to fractional sizes 2015-10-06 15:32:48 -07:00
Paul Bowsher 888c393b8a Fix a couple of typos and a syntax error 2015-10-06 22:26:33 +01:00
Ben Gotow ebdf06b183 fix(attachments): When downloads fail, don't resolve to chained actions
Summary: Fixes Sentry 3319 and 3303

Test Plan: Run three new tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D2118
2015-10-05 17:57:24 -07:00
Ben Gotow 20490e8161 fix(window-size): Don't set size to decimal numbers 2015-10-05 17:55:48 -07:00
Ben Gotow ea6aa2b643 fix(Sentry 3228): Bad math sending an incomplete bounds struct to Electron 2015-10-05 17:50:14 -07:00
Drew Regitsky d9ac4e4359 fix(onboarding): fix error handling for invalid account data from server
Summary:
Change `addAccountFromJSON` in `AccountStore` to throw an exception when it encounters
invalid data, instead of calling `atom.emitError()`. Just calling `emitError` doesn't
throw an exception, so the code proceeds as if an account has been added. Instead, call
`emitError` from AccountSettingsPage, and display an error message to the user.

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: evan

Differential Revision: https://phab.nylas.com/D2116
2015-10-05 17:31:29 -07:00
dillon b8b8b7af6a fix(NUX): set smaller default window size for users with large monitors
Summary:
fixes T4080

set the maximum default viewport size to 1440x900, the screen resolution for a 15 inch macbook pro.

if the monitor is either wider or taller than the default, then cap the dimension and center it.

Test Plan: added tests

Reviewers: evan, bengotow

Reviewed By: evan, bengotow

Maniphest Tasks: T4080

Differential Revision: https://phab.nylas.com/D2115
2015-10-05 16:24:17 -07:00
Michael Grinich f04682031c actually no more gh-pages 2015-10-05 05:08:53 -07:00
Christine Spang 3f44dc75ed Fix default mail client detection on Linux. 2015-10-05 03:49:52 -07:00
Ben Gotow 20e1a7de9d fix(auth): Merge but temporarily disable encrpytion during Gmail Oauth 2015-10-05 03:27:28 -07:00
Evan Morikawa 213b1f464e fix(account): error reporter returns an error 2015-10-05 01:50:39 -07:00
Evan Morikawa 658a267f9d fix(styles): padding fixes 2015-10-05 00:38:48 -07:00
Evan Morikawa 10ed936c22 fix(account): change default user for data import 2015-10-04 16:34:09 -07:00
Ben Gotow 20fb66cf95 fix(timeouts): Wait 5 mintues before hanging up /send 2015-10-04 00:54:07 -07:00
Ben Gotow ce5c54c333 fix(notifications): Add a purple tint color for developer notification 2015-10-04 00:22:59 -07:00
Ben Gotow ecf557ce31 fix(icons): New artwork for a few initial packages, labels 2015-10-03 23:34:43 -07:00
Ben Gotow 7d973d25c5 fix(feedback): Change default window position, move handling to main window, hide close buttons in Intercom 2015-10-03 22:22:12 -07:00
Ben Gotow 05d68b1a62 fix(install-package): Point to the examples directory by default 2015-10-03 19:31:31 -07:00
Ben Gotow c20599d471 feat(dev-mode): Toggle dev mode, sticky through restarts 2015-10-03 19:04:19 -07:00
Ben Gotow 9e8761ff0e fix(registered-region): Fix "show component regions" hiding composer white border 2015-10-03 18:11:55 -07:00
Ben Gotow d0ac42f07f feat(plugins): Restore the plugins sidebar view 2015-10-03 18:11:36 -07:00
Ben Gotow c29220365a fix(updater): Send UUID and email accounts to enable more specific update distribution 2015-10-03 14:45:39 -07:00
Ben Gotow 94bdcc6900 feat(templates): Final examples package is in - templates! 2015-10-03 14:05:47 -07:00
Ben Gotow 28bf9117bd feat(test-data): AccountStore feature to load test data 2015-10-03 12:05:05 -07:00
Evan Morikawa 2a7496642c fix(specs): specs run clean 2015-10-02 18:44:12 -07:00
Evan Morikawa c093cb1764 fix(styles): fix fonts in settings and iframe 2015-10-02 17:48:36 -07:00
Evan Morikawa 4651fe5350 fix(sounds): make sounds listen to config options
Summary: Fixes T3887

Test Plan: new specs

Reviewers: bengotow

Reviewed By: bengotow

Projects: #edgehill

Maniphest Tasks: T3887

Differential Revision: https://phab.nylas.com/D2104
2015-10-02 17:04:15 -07:00
Evan Morikawa 5bd56ff232 fix(scroll): better check for scrollTo in multiselect list 2015-10-02 16:25:48 -07:00
Ben Gotow 7ae4c8209d switch(env): Move N1 to Nylas production API 2015-10-02 15:01:31 -07:00
Evan Morikawa 6d14e36e71 refactor(n1): Update N1.sh to use N1_PATH instead of EDGEHILL_PATH 2015-10-02 11:58:44 -07:00
Evan Morikawa f6ef8a8b0c refactor(n1): change launch script to N1.sh 2015-10-02 11:58:38 -07:00
Evan Morikawa 57fef805cd refactor(spec) move spec-nylas to spec 2015-10-01 21:39:44 -07:00
Evan Morikawa 56364ff0c7 refactor(exports): move exports to src/global 2015-10-01 21:23:37 -07:00
Evan Morikawa 320216c2c8 feat(sounds): add new sound registry 2015-10-01 19:24:06 -07:00
Evan Morikawa b829110401 fix(fonts): update fonts and styles 2015-10-01 17:55:11 -07:00
Evan Morikawa f2feeec62f fix(*): fix references and remove cruft 2015-10-01 09:56:05 -07:00
Evan Morikawa f88b0f3708 feat(archive): shows trash for non-archive accounts
Summary:
Fixes T3570
Fixes T3737

Rename ArchiveThreadHelper to RemoveThreadHelper

Rename of `getRemovalTask`

Remove unarchive from `RemoveThreadHelper`. Pass in mailviewfilter

Rename actions

Rename archive action

renmaing

support trash and archive folders in RemoveThreadHelper

Move everything over to trash

add tests

Hide trash and archive

Test Plan: new tests

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Maniphest Tasks: T3570, T3737

Differential Revision: https://phab.nylas.com/D2089
2015-09-30 19:51:48 -07:00
Ben Gotow b1724b9e47 fix(thread-list): Recompute visible region after window resize 2015-09-30 15:13:21 -07:00
Ben Gotow 48ed1a98f1 fix(mailto): Correct mailto handling when link has & instead of first ? 2015-09-30 14:28:35 -07:00
Ben Gotow 728d99e5e0 fix(task-queue): After restoring the queue at launch, start processing tasks 2015-09-30 14:09:28 -07:00
Ben Gotow b7d829bfa1 fix(change-mail): Fix performRemote never resolving if no threads or messages to process 2015-09-30 14:09:06 -07:00
Ben Gotow 029270bcae perf(thread-list): Avoid recomputing column contents when item prop has not changed 2015-09-30 13:57:58 -07:00
Ben Gotow 801c7a4c35 fix(account-switcher): Add Account > Manage Accounts 2015-09-30 12:29:56 -07:00
Evan Morikawa 22b13b897b feat(sync): request a smaller page size initially
Summary:
Check out:
https://docs.google.com/a/nylas.com/spreadsheets/d/1XdhBYi83cyRSLM1GYwPFp0neOl4jN_5BmDm5lWH77q0/edit?usp=sharing

Also work window loads immediately after we have account credentials

Test Plan: new tests

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Differential Revision: https://phab.nylas.com/D2083
2015-09-30 10:47:33 -07:00
Evan Morikawa fe9bacadbc fix(account): select account after load
Summary:
It wasn't selecting the account after you added it

Fixes T3569

Test Plan: new tests

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3569

Differential Revision: https://phab.nylas.com/D2085
2015-09-30 10:12:12 -07:00
Ben Gotow 53d2b4972a fix(task-counts): In the activity box, show "Moving to folder... (4) = threads not task counts
Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2087
2015-09-30 09:54:14 -07:00
Ben Gotow a25ec2551f feat(post-auth): Initial prefs + packages screens, welcome copy changes
Summary:
Package names must match directory names

Not going to use new Swithc component, but might as well be part of component kit

Move APMWrapper into core so it can be used from anywhere

Move manual package install coe to package-manager

Gray out window titles when in the background

Do not allow multiple onboarding windows at the same time

Finalize styling f initial-prefs and initial-packages, make it work (only github package atm)

Other nits

Change the welcome copy:

- Call it easy to extend vs easy to use
- Remove the subtitle from the first screen which doesn't really fit
- Make the second page emphasize that its created /for/ developers and easy to extend with Javascript.
- Explain what the sync engine is rather than saying it's "faster and more extensible" (??)

Test Plan: Run tests

Reviewers: evan, dillon

Reviewed By: evan

Maniphest Tasks: T3346

Differential Revision: https://phab.nylas.com/D2079
2015-09-29 23:58:30 -07:00
Ben Gotow 8151e6a8a3 feat(feedback): Add blue feedback button in bottom left, remove dead code from DeveloperBarStore
Summary: Adds a prominent blue button to email us feedback

Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D2081
2015-09-29 23:20:23 -07:00
Ben Gotow aa58743b38 fix(drafts): Fix syncback issue caused by bad Account database query 2015-09-29 12:14:11 -07:00
Ben Gotow 78e7f06e14 fix(db): Disable verbose warnings from DatabaseView 2015-09-29 09:46:32 -07:00
Ben Gotow 9a3356c5e9 fix(docs): Replace docs references to Edgehill with N1 2015-09-29 09:45:02 -07:00
Ben Gotow 3ccc5e3d99 rename(Nylas Mail): Replace Nylas Mail > N1 2015-09-29 09:44:30 -07:00
Evan Morikawa e9ce962aae fix(composer): fix to tabbing field with test
Summary: Fixes in tabbing and css updates in composer

Test Plan: new tests

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2075
2015-09-28 12:55:45 -04:00
Ben Gotow c59e2f2438 fix(message-store): Additional spec for double-focus, fix Menu warning 2015-09-28 02:26:26 -07:00
Ben Gotow f2418be462 fix(onboarding): Cleanup for recent commits to onboarding workflow. See description
- rm dead addAccount code that came back in a merge

- use command everywhere to open onboarding

- centralize close vs. quit logic in an OnboardingAction

- fix issue where the window size is calculated improperly because we have a padding value which is a fraction of height. In fact, remove no-top / padding-top 10% for good.
2015-09-28 02:12:35 -07:00
Ben Gotow 3b0a7910e0 fix(focused-content): Better test fixtures for previous fix 2015-09-28 01:32:20 -07:00
Ben Gotow 705200a138 fix(focused-content): Prevent keydowns from outpacing animation frames, improves keyboard move speed through thread list
To reproduce previous issue, turn key rpeat speed all the way up and then hold an arrow key.
2015-09-28 01:16:52 -07:00
Ben Gotow 65bf4f7763 fix(popover): Popover had double-nested scrolling, no longer supported centering over button 2015-09-27 23:46:07 -07:00
Ben Gotow 5f1b909cae fix(change-mail-task): Limit the parallelism of API requests via change mail task
No you can't make 1,100 API requests at the same time. Thanks. New specs to make sure there aren't any regressions in this behavior.
2015-09-27 23:42:43 -07:00
Ben Gotow 2634126535 fix(db): Additional assertions for common databas mistakes 2015-09-27 21:08:35 -04:00
Evan Morikawa e74981502e feat(onboarding): improve onboarding flow
Summary:
Now with more CSS

Also fixed flow for when you're just adding an account

Fixes T3805

Test Plan: manual :(

Reviewers: drew, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3805

Differential Revision: https://phab.nylas.com/D2071
2015-09-25 20:43:36 -04:00
Evan Morikawa aa019360b9 fix(participants): properly handle tab and comma in participant field
Summary:
Fixes T3797
Fixes T3796

linter

Test Plan: new tests

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3796, T3797

Differential Revision: https://phab.nylas.com/D2072
2015-09-25 16:21:39 -04:00
Evan Morikawa 02c4d82f01 fix(draft): recover if draft is destroyed during access
Summary: Plus tests

Test Plan: new tests

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2067
2015-09-25 16:16:54 -04:00
Evan Morikawa 593e4fb78d fix(composer): don't blur when adding a link
Summary:
Refactor focusing behavior in floating toolbar controller

Fixes T3781
Fixes T3791

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T3791, T3781

Differential Revision: https://phab.nylas.com/D2073
2015-09-25 16:14:01 -04:00
Ben Gotow d5f4aa4ac0 fix(message-sidebar): New ContactCard injectable role, updated FocusedContactStore
- The FocusedContactStore was triggering too often, and leaving it up to the FullcontactStore to fetch the full Contact model for the focused contact (pulled from thread.)

The FocusedContactStore triggers more responsibly, and registering for the role "MessageListSidebar:ContactCard" now gives you the focused contact as a full database model. The whole ContactCard region also fades in and out.
2015-09-24 18:58:53 -07:00
Ben Gotow 9f3600b9eb fix(react-remote): Do not cancel key events, check for floating point bounding sizes 2015-09-24 15:21:58 -07:00
Ben Gotow 66d3d89979 fix(onboarding): Lots of changes to account management, dead code cleanup
Summary:
Better error handling in the account settings page and a loading spinner

Add Account... replaces "Link External Account", and it works

Clean dead code from onboarding pages, remove base class component

Always show the account switcher

rm dead EdgehillAPI code, AccountStore now manages accounts and credentials in config, not in database

Fix specs

Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: evan

Projects: #edgehill

Differential Revision: https://phab.nylas.com/D2059
2015-09-24 14:51:15 -07:00
Evan Morikawa d73ff30510 feat(sync): expanded details on sync status
Summary: Fixes T3574

Test Plan: manual

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Maniphest Tasks: T3574

Differential Revision: https://phab.nylas.com/D2058
2015-09-24 11:03:11 -07:00
Ben Gotow a37e567888 fix(window-serialization): Restore window size, remove cruft from atom.coffee
Summary: Simplify the default window size, restore window size when the main window is loaded, fix serialization of packages in beforeunload.

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2061
2015-09-24 10:40:38 -07:00
Evan Morikawa 10d90ea718 feat(loading): new loading screen
Summary: New loading screen

Test Plan: manual

Reviewers: dillon, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2057
2015-09-23 17:33:15 -07:00
Ben Gotow 3a5a6ce7b9 fix(thread-list): Use hasAttachments flag, fix bug where attachments icon did not appear in search results 2015-09-23 15:48:03 -07:00
Evan Morikawa a7323cdc72 fix(bootup): don't show unresponsive dialog until main window loaded
Summary:
Fixes T3496
This is a patch just so that simple modal doesn't show.

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T3496

Differential Revision: https://phab.nylas.com/D2053
2015-09-23 10:50:42 -07:00
Ben Gotow 91998d3b36 fix(onboarding): Tweaks, styles, etc. for new onboarding experience
Summary:
Remove logout menu item and buttons, turn Link External Account to Add Account

Onboarding window starts hidden, is shown when react component is mounted and sized

Use get/setBounds to animate position and size at the same time smoothly

Fix specs, change 401 notice

Delay bouncing to Gmail to show users the Gmail screen momentarily

Make the animated resizing code defer so it doesn't run in a hard loop, and other animations can run at the same time

Bring back crossfade between screens, remove left/right shift on welcome screens

Test Plan: Run tests

Reviewers: drew, evan

Reviewed By: evan

Maniphest Tasks: T3529

Differential Revision: https://phab.nylas.com/D2054
2015-09-23 09:59:34 -07:00
Evan Morikawa 0d1c0afc70 fix(db): add index on thread id 2015-09-23 09:54:03 -07:00
Drew Regitsky d40f3e3fdb New onboarding flow, uses new Nylas auth
Summary:
Depends on D2049
This change replaces the onboarding flow to include new graphics, copy, and
support for the new Nylas auth flow. New account choosing UI presents a list
of account types, rather than guessing based on an entered email. Pages before
and after introduce the user to different features of the client.

Known issue: Polling for gmail account connection works, but continues even if
you leave the page.

Test Plan: Manual testing.

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2050
2015-09-22 20:11:51 -07:00
Ben Gotow 42f65798d6 fix(db): Atomically was not resolving with a value, fixes mail notifications 2015-09-22 17:33:05 -07:00
Evan Morikawa b50d488f2e refactor(composer): update contenteditable functionality
Summary:
Fixes T3510
Fixes T3509
Fixes T3508
Fixes T3549

Extracted clipboard service

Remove unused style prop

Begin extracting quoted text from composer. Spec for clipboard service

Fix contenteditable specs

Begin to extract floating toolbar

Extract out DOMUtils and further extract floating toolbar

Further extracting domutils and floating toolbar

composer floating toolbar extracted

Fixes to hover and link states

Collapse adjacent ul lists

Fix outdent when deleting on a bulleted list

Fix bullet controls

Fixes to list creation and deletion

Add underline keyboard shortcut

Test Plan: manual :(

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3508, T3509, T3510, T3549

Differential Revision: https://phab.nylas.com/D2036
2015-09-22 16:02:44 -07:00
Evan Morikawa 98ca7f15bd fix(contact): fix contacts completion in popout composers
Summary:
Fixes T3568

The composer windows had the wrong cache in their `ContactStore`s. Since
it's VERY expensive to repopulate a ContactStore's cache, we now have a
`WindowBridge` that allow you to, with a Promise, invoke methods on the
main window instead.

(Still need to fix some tests)

Test Plan: Fixed tests

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Maniphest Tasks: T3568

Differential Revision: https://phab.nylas.com/D2045
2015-09-22 15:32:27 -07:00
Ben Gotow 4bdc650aaa feat(account-sidebar): Ability to add custom items to the sidebar 2015-09-22 14:43:17 -07:00
Ben Gotow 74894e91ff feat(thread-list): Create custom icon components via role: ThreadListIcon 2015-09-21 16:21:57 -07:00
dillon ff5c88ed69 fix(NUX): show when initial sync is taking place
Summary:
fixes T3563

todo
[x] check with @bengotow and @evan -- does this solution make sense to you?
[x] decide on the actual visual cue to the user -- @bengotow you suggested a loader or spinner, but i was thinking that actual copy should be used so it doesn't look like an unhelpful spinner which goes indefinitely. what do you think of the copy here?
[ ] implement spinner similar to sending a draft
[ ] write tests
[ ] verify that we're showing progress in a helpful way

problem
- new users would see nothing in edgehill after they log in, with no indication on why they can't see any of their mail
- in actuality, our backend is actively pulling all their mail to serve it to edgehill
- new users think edgehill is broken because they're unaware of the work that our backend was doing

solution
- when the backend sends deltas to edgehill, we show a message in the activity bar saying that we're trying to get their mail
- we'll show the sync progress

Test Plan: still need to add tests. all previous tests still green.

Reviewers: bengotow, evan

Subscribers: sdw, bengotow, evan

Maniphest Tasks: T3563

Differential Revision: https://phab.nylas.com/D2032
2015-09-18 16:15:15 -07:00
Ben Gotow d771bb273c fix(networking): Don't include entire response body in didMakeAPIRequest
Summary: Fixes T3625

Test Plan: Easy to test by opening/closing reply options dropdown as a large image attachment is downloaded

Reviewers: evan, dillon

Reviewed By: dillon

Maniphest Tasks: T3625

Differential Revision: https://phab.nylas.com/D2034
2015-09-18 11:18:26 -07:00
dillon 89e507fe76 fix capitalization of JavaScript and CoffeeScript
Summary: i accidentally messed up phab and arcanist locally, so this diff is to fix these mistakes i made. it's the combination of D2037 and D2028.

Test Plan: tested manually

Reviewers: bengotow, evan

Differential Revision: https://phab.nylas.com/D2043
2015-09-18 11:10:14 -07:00
Ben Gotow 4d2ea63be7 fix(modelify): Five new specs and fixes for Sentry 2973, others
Fixes T3613 as well.

Pushing directly to master because it's mostly specs and resolves an "Unbreak Now!" ticket
2015-09-15 18:08:05 -07:00
Evan Morikawa 61eec6b21a fix(database): add DatabaseStore.atomically to handle read/write issues
Summary:
Fixes T3566
Fixes T3567

Test Plan: new tests

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3566, T3567

Differential Revision: https://phab.nylas.com/D2025
2015-09-15 20:27:52 -04:00
dillon fc770a85cd feat(toggle-unread): threads can now toggle their unread status. fixes T3483.
Summary:
still WIP, but functionality is there.

TODO:
[x] write tests
[x] swap out the current markasread icon for the correct markasread icon that @sdw is making
[x] figure out how to address this point by @bengotow: https://phab.nylas.com/D2024?id=19139#inline-12168

Test Plan: tested manually. still need to write tests though.

Reviewers: evan, bengotow

Reviewed By: bengotow

Subscribers: sdw

Maniphest Tasks: T3483

Differential Revision: https://phab.nylas.com/D2024
2015-09-15 16:49:16 -07:00
Ben Gotow 2384f5bd09 fix(message-list): Optimize draft deletion along with draft creation
Summary:
I honestly can't wait until we refactor this logic into a sort of "LiveQuery" class so that it can apply to all of the queries in the whole app. These optimizations make deleting / creating drafts quite a bit more responsive because there's no delay between the database store emitting an event and the view updating.

Fixes T3456

No explicit tests for now because we'll pull this into a nice class soon

Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: evan

Maniphest Tasks: T3456

Differential Revision: https://phab.nylas.com/D2019
2015-09-15 14:27:18 -07:00
Ben Gotow 05af501721 fix(mailto): Linux support for mailto links
Summary: Mailto link handling for ubuntu and other linux platforms

Test Plan: A few new tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D2023
2015-09-15 14:26:47 -07:00