Commit graph

2169 commits

Author SHA1 Message Date
Ben Gotow 1756abab85 fix(newsletter): Don't make API request if email is the same 2016-01-20 17:09:15 -08:00
Ben Gotow af50e23ea4 fix(onboarding): Loosen RegExp so a.com and a.b.c.d.com are valid 2016-01-20 17:09:15 -08:00
Juan Tejada 86cbd3aae9 Add collapse capabilities to OutlineView
- Make user category sections collapsible when in unified view
- Get rid of dumb CategoryHelpers class
2016-01-20 17:09:05 -08:00
Drew Regitsky 1c0ed5c113 feat(plugin-auth): add plugin auth function in NylasAPI
Summary:
Adds two new functions in NylasAPI to allow auth and unauth of
plugin backends. The `authPlugin` function should be called within
plugins before taking any action that requires offline account access
from the plugin's backend server. The `unauthPlugin` function will be
used by N1 internally to revoke offline account access for plugins.

Test Plan: manual for now

Reviewers: bengotow, evan, juan

Reviewed By: evan, juan

Differential Revision: https://phab.nylas.com/D2440
2016-01-20 16:43:11 -08:00
Evan Morikawa c2ceb6fd6c refactor(toolbar): allow toolbar extensions in contenteditable
Summary:
This is a refactor of the toolbar in the contenteditable. Goals of this
are:

1. Allow developers to add new buttons to the toolbar
2. Allow developers to add other component types to the floating toolbar (like the LinkEditor)
3. Make the toolbar declaratively defined instead of imperatively set
4. Separate out logical units of the toolbar into individual sections
5. Clean up `innerState` of the Contenteditable

The Floating Toolbar used to be an imperative mess. Doing simple
functionality additions required re-understanding a very complex set of
logic to hide and show the toolbar and delecately manage focus states.
There also was no real capacity for any developer to extend the toolbar.

It also used to be completely outside of our `atomicEdit` system and was a
legacy of having raw access to contenteditable controls (since it all used
to be directly inside of the contenteditable)

Finally it was difficult to declaratively define things because the
`innerState` of the Contenteditable was inconsistently used and its
lifecycle not properly thought through. This fixed several lifecycle bugs
with that.

Along the way several of the DOMUtils methods were also subtly not
functional and fixed.

The Toolbar is now broken apart into separate logical units.

There are now `ContentedtiableExtension`s that declare what should be
displayed in the toolbar at any given moment.

They define a method called `toolbarComponentData`. This is a pure
function of the state of the `Contenteditable`. If selection and content
conditions look correct, then that method will return a component to
render. This is how we declaratively define whether a toolbar should be
visible or not instead of manually setting `hide` & `show` bits.

There is also a `toolbarButtons` method that declaratively defines buttons
that can go in the new `<ToolbarButtons>` component.

The `ToolbarButtonManager` takes care of extracting these and binding the
correct editorAPI context.

Now the `<LinkEditor>` is a separate component from the `<ToolbarButtons>`
instead of being smashed together.

The `LinkManager` takes care of declaring when the `LinkEditor` should be
displayed and has properly bound methods to update the `contenteditable`
through the standard `atomicEdit` interface.

If users have additional contenteditable popup plugins (like displaying
extra info on a name or some content in the composer), they can now
implement the `toolbarComponentData` api and declaratively define that
information based on the state of the contenteditable.

Test Plan: TODO

Reviewers: bengotow, juan

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2442
2016-01-20 14:35:20 -08:00
Juan Tejada 4ef95212ad Fix Category require 2016-01-20 13:14:34 -08:00
Ben Gotow e5aaefc45a Change the sidebar to use Flexbox for container 2016-01-20 13:04:06 -08:00
Ben Gotow f99edda250 fix(readme): Broken link to Message View on Github 2016-01-20 12:22:47 -08:00
Ben Gotow 8b9b6a0467 rm(tooltip): Tooltip package no longer in use 2016-01-20 11:30:57 -08:00
Ben Gotow 08e93b287f rm(intercom): Point feedback to support.nylas, shrink button 2016-01-20 11:26:14 -08:00
Ben Gotow f0dec2d543 bump(version): 0.3.44 beta 2016-01-20 10:56:00 -08:00
Ben Gotow d561fe5b71 fix(auth): Increase timeout to 60s for Exchange auth 2016-01-20 10:49:27 -08:00
Drew Regitsky 6ae7fb7aef fix(templates): fix when the "no templates" message is displayed 2016-01-20 10:24:45 -08:00
Juan Tejada f2acba48ee Add account switcher back to sidebar:
- Account switcher can now switch between all accounts and each account
- Updates FocusedPerspectiveStore and Actions.focusDefaultMailboxPerspectiveForAccounts
  to focus a perspective for accountIds instead of for a single account,
  and updates methods
  - Adds helpers to CategoryStore and MailboxPerspective
  - Updates key commands to allow switch to unified inbox
2016-01-19 23:42:50 -08:00
Jackie Luo 955e8b899f Merge branch 'master' of github.com:nylas/N1 2016-01-19 16:56:25 -08:00
Jackie Luo a5e20f19c2 fix(message): Message time no longer selectable
Summary: Closes #910.

Test Plan: Manual. Tested locally.

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2453
2016-01-19 16:55:52 -08:00
Ben Gotow 67a194f5fa Merge pull request #966 from cllns/standardize-am-and-pm-capitalization
Standardize capitalization to am/pm, for message-list
2016-01-19 16:45:02 -08:00
Ben Gotow ec22f7bebf Merge pull request #1041 from mbilker/script-fix
Allow additional parameters specified on command line
2016-01-19 16:42:31 -08:00
Jackie Luo f8e98f2112 fix(message): Message time no longer selectable
Summary: Closes #910.

Test Plan: Manual. Tested locally.

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2453
2016-01-19 16:32:03 -08:00
Sean Collins f14087a721 Standardize message-list capitalization to AM/PM, 2016-01-19 15:54:44 -07:00
Ben Gotow 4e795e79d3 Merge pull request #1029 from mbilker/phishing-detection
Set Phishing Detection package name to the correct value
2016-01-19 13:51:57 -08:00
Juan Tejada 596c8c3408 Fix collapsing behavior for non perspective sidebar items
- Assign unique id for sheet and draft sidebar items
2016-01-19 10:51:52 -08:00
Michael Grinich a8a26a86fc Update README.md 2016-01-19 01:34:22 -08:00
Ben Gotow 6f0c70e5a7 Don't wait for all requests to succeed before displaying results 2016-01-19 00:00:08 -08:00
Ben Gotow 07df74f823 Show the important icon whenever any account in the perspective supports it 2016-01-19 00:00:08 -08:00
Juan Tejada d592474073 More account sidebar refactor + sections for unified inbox
- Refactors some of the old code which was 💩
  - Makes SidbarSection a factory for different types of items for the
    OutlineView
  - Decided not to create a OutlineViewItem.Model class since the only
    purpose it would serve would be to validate getters for props or for
    documentation, both of which are already done via React.PropTypes.
- Adds sections when looking at unified inbox and integrates with new
  mailbox perspecitve interface
- Updates OutlineViewItem a bit + styles
- Tests missing
2016-01-18 23:22:46 -08:00
Ben Gotow fbbc325a84 Update SearchSubscription to support basic multiaccount search... seems to work? 2016-01-18 22:37:49 -08:00
Michael Grinich 64a1040ba5 Update README.md 2016-01-18 19:28:23 -08:00
Juan Tejada 0e3d2b75dc Fix merge errors 2016-01-18 11:56:52 -08:00
Juan Tejada fa6a2fa5c6 Minor fixes and style updates 2016-01-18 11:48:34 -08:00
Michael Grinich 3ee00ac367 Update README.md 2016-01-18 10:32:43 -08:00
Ben Gotow 02703998da Fix for broken thread serialization. We now coerce folders/labels => categories and never go back. 2016-01-18 01:47:09 -08:00
Ben Gotow 5859565a19 Make a few changes to AccountSidebar - needs to use accountIds? 2016-01-18 01:31:54 -08:00
Ben Gotow 3ee96b714b Remove current()? references, use Perspectiv.forNothing instead 2016-01-18 01:31:35 -08:00
Ben Gotow b7144d9402 Merge branch 'unified-inbox-bg' into unified-inbox
# Conflicts:
#	internal_packages/account-sidebar/lib/account-sidebar-store.coffee
#	internal_packages/account-sidebar/lib/main.coffee
#	internal_packages/category-picker/lib/category-picker.cjsx
#	spec/stores/focused-perspective-store-spec.coffee
#	src/flux/stores/focused-perspective-store.coffee
#	src/mailbox-perspective.coffee
2016-01-18 00:53:03 -08:00
Ben Gotow 1e5b26a818 Unified inbox mailbox perspectives working (sidebar disabled atm) 2016-01-18 00:47:04 -08:00
Juan Tejada 351a602b86 AccountSidebar package refactor:
- Creates OutlineView generic component and uses that instead of custom
  code
- Refactors AccountSidebarStore:
  - Split the generation of the state tree into smaller functions
  - Adds different types of account sidebar items and sections, which contain
    logic and props necessary to be rendered as OutlineViewItems, and
    removes that logic from the store
- Removes WorkspaceStore.SidebarItem and removes the ability to register
  new sidebar items. If people want to add something to the sidebar they
  can just register a Component via the component registry and use the
  OutlineView component
- Removes the DraftListSidebarItem, which was basically duplicated code
  for an item but with a different data source. This is now handled
  generically by the account sidebar by rendering OutlineViewItems with
  different props and handlers
- Clean ups here and there:

- TODO
  - Add AccountSwitcher
  - Revisit calculation and generation of the state tree. Should the
    parent store contain and update the entire state all the time.
    Should separate items inside the tree have their own data sources?
  - This would avoid having the AccountSidebarStore listen to a bunch of
    different other stores, and the specific logic wold be contained
    inside each item type.
2016-01-15 16:55:21 -08:00
Ben Gotow eb9fc4f224 WIP 2016-01-15 15:39:32 -08:00
Ben Gotow 1ac84f4013 Clean up the MultiselectList implementation a bit 2016-01-15 14:26:07 -08:00
Evan Morikawa 74e21bce16 feat(tasks): add Create, Update, Destroy tasks plus spec & lint fixes
Summary:
1. **Generic CUD Tasks**: There is now a generic `CreateModelTask`,
`UpdateModelTask`, and `DestroyModelTask`. These can either be used as-is
or trivially overridden to easily update simple objects. Hopefully all of
the boilerplate rollback, error handling, and undo logic won't have to be
re-duplicated on every task. There are also tests for these tasks. We use
them to perform mutating actions on `Metadata` objects.

1. **Failing on Promise Rejects**: Turns out that if a Promise rejected
due to an error or `Promise.reject` we were ignoring it and letting tests
pass. Now, tests will Fail if any unhandled promise rejects. This
uncovered a variety of errors throughout the test suite that had to be
fixed. The most significant one was during the `theme-manager` tests when
all packages (and their stores with async DB requests) was loaded. Long
after the `theme-manager` specs finished, those DB requests were
(somtimes) silently failing.

1. **Globally stub `DatabaseStore._query`**: All tests shouldn't actually
make queries on the database. Furthremore, the `inTransaction` block
doesn't resolve at all unless `_query` is stubbed. Instead of manually
remembering to do this in every test that touches the DB, it's now mocked
in `spec_helper`. This broke a handful of tests that needed to be manually
fixed.

1. **ESLint Fixes**: Some minor fixes to the linter config to prevent
yelling about minor ES6 things and ensuring we have the correct parser.

Test Plan: new tests

Reviewers: bengotow, juan, drew

Differential Revision: https://phab.nylas.com/D2419

Remove cloudState and N1-Send-Later
2016-01-15 15:16:21 -05:00
Karim Hamidou 268757c259 [N1] Validate input in the signup dialog
Summary:
This diff bundles a number of small usability fixes to the "Create account" window. It notably:
- forces users to enter required fields before moving on to the next step
- validates email addresses and domain names

Test Plan: Tested manually by going through all the possible auth flows.

Reviewers: evan, juan, bengotow

Reviewed By: bengotow

Subscribers: bengotow

Projects: #edgehill

Differential Revision: https://phab.nylas.com/D2377
2016-01-15 11:27:14 -08:00
Drew Regitsky ea934939a1 fix(mail-rules): tiny CSS fix to "+" button in mail rules 2016-01-15 11:01:59 -08:00
mbilker 560f659643 fix(N1.sh): allow additional parameters specified on command line
This prevents Electron saying it cannot find the main entrypoint, when
using the `--test -s` parameters on the command line to spec test plugins.
2016-01-15 12:14:07 -05:00
mbilker dbb996fd79 fix(phishing): set the package name to the correct value 2016-01-14 22:43:40 -05:00
Ben Gotow 6b6f2b39d3 More renaming of view => data source 2016-01-14 15:04:17 -08:00
Ben Gotow 85e65e9135 Some basic thread list cleanup 2016-01-14 14:04:51 -08:00
Ben Gotow 273679a861 DataView => ListDataSource 2016-01-14 12:26:54 -08:00
Ben Gotow 88b901d8a5 New QueryRange specs, fixes 2016-01-14 12:03:06 -08:00
Ben Gotow 9814d80d5a New MutableQueyResultSet specs, fixes 2016-01-14 11:25:52 -08:00
Ben Gotow cb5f2985ef Merge branch 'master' into unified-inbox
# Conflicts:
#	spec/stores/file-download-store-spec.coffee
2016-01-13 17:20:34 -08:00