Commit graph

238 commits

Author SHA1 Message Date
Evan Morikawa e638e94084 feat(usage): Add a FeatureUsageStore and move Identity to the DB
Summary:
This is a WIP

Depends on D3799 on billing.nylas.com

This adds a `FeatureUsageStore` which determines whether a feature can be
used or not. It also allows us to record "using" a feature.

Feature Usage is ultimately backed by the Nylas Identity and cached
locally in the Identity object. Since feature usage is attached to the
Nylas Identity, we move the whole Identity object (except for the ID) to
the database.

This includes a migration (with tests!) to move the Nylas Identity from
the config into the Database. We still, however, need the Nylas ID to stay
in the config so it can be synchronously accessed by the /browser process
on bootup when determining what windows to show. It's also convenient to
know what the Nylas ID is by looking at the config. There's logic (with
tests!) to make sure these stay in sync. If you delete the Nylas ID from
the config, it'll be the same as logging you out.

The schema for the feature usage can be found in more detail on D3799. By
the time it reaches Nylas Mail, the Nylas ID object has a `feature_usage`
attribute that has each feature (keyed by the feature name) and
information about the plans attached to it. The schema Nylas Mail sees
looks like:

```
"feature_usage": {
   "snooze": {
     quota: 10,
     peroid: 'monthly',
     used_in_period: 8,
     feature_limit_name: 'Snooze Group A',
   },
}
```

See D3799 for more info about how these are generated.

One final change that's in here is how Stores are loaded. Most of our
core stores are loaded at require time, but now things like the
IdentityStore need to do asynchronous things on activation. In reality
most of our stores do this and it's a miracle it hasn't caused more
problems! Now when stores activate we optionally look for an `activate`
method and `await` for it. This was necessary so downstream classes (like
the Onboarding Store), see a fully initialized IdentityStore by the time
it's time to use them

Test Plan: New tests!

Reviewers: khamidou, juan, halla

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D3808
2017-02-03 15:31:31 -08:00
Karim Hamidou 7364ecb9fd [N1] Changes required for implementing snooze
Summary: This is a pretty small diff – it changes the snooze-store to save metadata for the individual messages affected instead of for the whole thread. We need this to have snoozing work without running an actual sync of the whole mailbox.

Test Plan: WIP.

Reviewers: evan, halla

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3815
2017-02-02 17:05:32 -08:00
Juan Tejada 7beff5bae4 fix(onboarding) Allow users who only have custom imap to auth
Summary:
Users who only had a custom imap account could not open the window to
add a custom imap account the first time the auth was opened, rendering
the app useless for them.

Github issue #3185 and T7691

Test Plan: manual

Reviewers: halla, spang, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3783
2017-01-25 15:06:58 -08:00
Juan Tejada d8c8dd809c fix(auth) Dont allow invalid form submission with Enter key 2017-01-24 17:43:34 -08:00
Juan Tejada 5ed1f4da9e 🎨 Fix to using imap-provider-settings package
Summary: see title

Test Plan: manual

Reviewers: spang, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3772
2017-01-24 16:25:03 -08:00
Juan Tejada 899538d642 fix(auth) fix timeouts 2017-01-24 12:06:56 -08:00
Juan Tejada ae584a8367 fix(auth) Increment IMAP auth timeout
Given that imap connections can take up to 90 seconds (see `auth-helpers` in k2),
we don't want to hang up our local connection too soon
2017-01-24 12:02:58 -08:00
Juan Tejada 0e19f4511e fix(auth): Properly wait for acct to be inited before adding to sidebar
Summary:
Previously, when adding an account, we waited for it to be completely loaded (which meant having fetched the folder list) before focusing it on the sidebar. This could take several seconds, so it made the app feel unresponsive or slow when adding an account.

Then, we changed the logic to wait an arbitrary amount of time to focus the newly added account in the sidebar, with the hope that it would be enough time to focus it correctly but that it wouldn't seem too long. This still caused the unwanted effect of focusing it before it had been fully loaded.

This commit changes the auth flow so that the onboarding shows a Success page until the newly added account is fully loaded, and only /then/ closes itself, focuses the main window, and allows the account to be correctly focused in the sidebar.

Test Plan: manual

Reviewers: halla, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3751
2017-01-24 07:34:18 -08:00
Juan Tejada 9c782bd479 fix(auth) Increment timeout for requests that initiate imap connections 2017-01-19 16:06:37 -08:00
Juan Tejada 27be619642 🎨 2017-01-19 15:37:01 -08:00
Evan Morikawa 735c7faa73 fix(auth): Gmail auth screen now shows error states
Summary:
- Refactor Gmail auth functions
- Add Analytics in
- Show error states

Depends on D3735

Test Plan: manual

Reviewers: khamidou, juan

Reviewed By: khamidou, juan

Differential Revision: https://phab.nylas.com/D3732
2017-01-18 17:44:22 -08:00
Halla Moore f407d5e430 rm(provider-setting): Remove duplicate "fastmail.com" 2017-01-17 08:49:21 -08:00
Halla Moore 0902d99678 fix(onboarding): Change how we determine default IMAP settings
Summary:
If we don't have IMAP settings for a particular email domain,
try to choose based on which provider was selected instead.

Fixes #3168

Test Plan: tested locally

Reviewers: spang, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3721
2017-01-17 08:47:35 -08:00
Halla Moore 6d403c99cf fix(icloud-sending): Add custom smtp settings
Summary: iCloud needs TLS

Test Plan: tested locally

Reviewers: tomasz

Reviewed By: tomasz

Differential Revision: https://phab.nylas.com/D3699
2017-01-15 17:09:59 -08:00
Evan Morikawa 1f0d46bcd7 feat(onboarding): add client_edition=basic to onboarding flow 2017-01-15 12:07:45 -08:00
Evan Morikawa 231c510f86 fix(auth): fix unnecessarly loud api errors
Summary:
Fixes T7520
Gets rid of the Gmail auth error too

Test Plan: manual

Reviewers: juan

Reviewed By: juan

Maniphest Tasks: T7520

Differential Revision: https://phab.nylas.com/D3688
2017-01-14 17:51:02 -08:00
Halla Moore 9037e84491 feat(fastmail): Add fastmail as a supported provider
Summary:
Also fixes an issue where we would show all any accounts
that aren't gmail or office365 as a generic imap account.

Depends on D3686

Test Plan: manual

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3687
2017-01-14 17:36:00 -08:00
Evan Morikawa c45dbdc48d feat(yahoo): got yahoo sending fixed 2017-01-14 14:47:33 -08:00
Halla Moore 4fd9967ffa 💄(account-onboarding): Fix margins on the accounts list 2017-01-14 10:44:26 -08:00
Evan Morikawa 45848ce3a0 fix(config): move from ~/.nylas-k2 to ~/.nylas-mail
Summary:
fix(config): move from ~/.nylas-k2 to ~/.nylas-mail

fix(auth): ignore onboarding urls that aren't Nylas

feat(sig): change default signature

bump(k2)

Test Plan: manual

Reviewers: halla, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D3664
2017-01-13 12:19:42 -08:00
Jackie Luo 78a7388318 🎨(rename): Update Nylas N1 to Nylas Mail
Test Plan: Tested locally.

Reviewers: halla, juan, evan

Reviewed By: juan, evan

Differential Revision: https://phab.nylas.com/D3645
2017-01-12 12:05:44 -08:00
Halla Moore 99e3f732d9 fix(custom-imap): Hide custom imap accounts and settings from onboarding
Summary:
IMAP no longer appears on the onboarding account list, and the option to
edit connection settings does not appear for any of the visible account
types. Custom IMAP accounts can still be added via a menu option.

Fixes T7474

Test Plan: tested locally

Reviewers: juan, jackie, evan

Reviewed By: evan

Maniphest Tasks: T7474

Differential Revision: https://phab.nylas.com/D3636
2017-01-12 10:25:33 -08:00
Halla Moore 49e4db69e3 feat(onboarding): Display a possible issue when credentials are incorrect
Summary:
When a user tries connecting an account and it 401's, show a note
that suggests what the issue may be, and link to a support article
for more information. In general, mention that they may need to use
an app password. If it's a Yahoo email address, ask if they've already
enabled the proper setting from within Yahoo.

Test Plan: tested locally

Reviewers: evan, jackie

Reviewed By: jackie

Differential Revision: https://phab.nylas.com/D3630
2017-01-11 11:19:38 -08:00
Jackie Luo 3a6a4299af feat(onboarding): Add Yahoo and iCloud and fix styling 2017-01-10 18:14:56 -08:00
Halla Moore 2f2cf5be4e fix(onboarding): Don't store type-specific fields when switching account types
Summary:
Since we pass all of the account info to the type-specific auth routes, having
extra fields in the account info object can cause the auth request to fail its
validation. This diff ensures that switching account types will drop any fields
in the account info object that aren't accepted across all routes.

Fixes T7455

Test Plan: tested locally

Reviewers: evan, juan

Reviewed By: juan

Maniphest Tasks: T7455

Differential Revision: https://phab.nylas.com/D3633
2017-01-10 17:34:57 -08:00
Halla Moore c9d106f802 fix(connection-settings): Update connection settings for fastmail.com
Summary: The previous settings didn't support all operations. Fixes T7450 and T7451.

Test Plan: tested locally

Reviewers: juan

Reviewed By: juan

Maniphest Tasks: T7450, T7451

Differential Revision: https://phab.nylas.com/D3626
2017-01-10 11:22:23 -08:00
Evan Morikawa df1343da37 feat(off): disable/hide snooze, mail rules, misc minor plugins 2017-01-06 15:39:09 -08:00
Evan Morikawa bbaf4590af feat(auth): update onboarding helpers to be async 2016-12-18 23:38:34 -05:00
Evan Morikawa 31a8fb2b5b feat(auth): add office 365 support
Summary: Adds a new button in auth for native Office 365 support

Test Plan: manual

Reviewers: jackie, halla, mark, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D3532
2016-12-16 16:53:46 -05:00
Karim Hamidou cb6f761df3 Required changes for refreshing access tokens. 2016-12-16 11:10:20 -08:00
Evan Morikawa 476bbb0e5f feat(auth): add better error state handling 2016-12-07 10:11:22 -08:00
Evan Morikawa f170d14b8d fix(errors): properly rethrow api error 2016-12-06 17:21:37 -08:00
Evan Morikawa e595590a9a refactor(auth): DRY auth 2016-12-06 16:03:42 -08:00
Evan Morikawa fcb36abbe8 fix(account): Remove unsupported account types 2016-12-02 16:44:44 -05:00
Ben Gotow 6d85a8ef81 lint(*): Fix linter errors within K2, update eslint grunt task 2016-12-01 15:38:16 -08:00
Evan Morikawa 00832b5a83 fix(auth): now authing IMAP through n1-cloud 2016-12-01 16:56:02 -05:00
Evan Morikawa 2ee11006e9 feat(auth): IMAP request to both n1-cloud and local sync 2016-12-01 16:56:02 -05:00
Ben Gotow 6fb08f55c5 fix(accounts): Save both local and cloud tokens per account 2016-12-01 13:35:20 -08:00
Jackie Luo a177146a6f fix(auth): Make N1 Cloud API request correctly 2016-11-30 14:13:46 -08:00
Jackie Luo 7b7fbb3b1b refactor(nylas-api): Create API requests from tasks 2016-11-29 16:33:44 -08:00
Jackie Luo bab39a5c21 fix(nylas-api): Send API and options as object 2016-11-29 16:33:44 -08:00
Evan Morikawa e1f1c23626 Introduce N1CloudAPI as endpoint 2016-11-28 15:38:53 -08:00
Ben Gotow d3bfe3fa71 fix(auth): Stop sending other crap with key 2016-11-28 11:05:00 -08:00
Ben Gotow ddc442d271 fix(auth): Support gmail auth against K2 2016-11-23 16:26:40 -08:00
Ben Gotow 6ac3637420 fix(auth): Use new endpoints for Gmail auth 2016-11-23 16:26:40 -08:00
Evan Morikawa 144fd7f372 Remove EdgehillAPI from auth and fix NylasRequest and perspective 2016-11-23 12:37:05 -08:00
Evan Morikawa e8ac7c6338 fix(auth): don't send unncessary IMAP params to local-sync/auth 2016-11-23 11:48:58 -08:00
Ben Gotow 9fbde1c3e9 fix(onboarding): Remove support for local sync engine 2016-11-23 09:41:49 -08:00
Ben Gotow 20317358cb Update auth to hit new hosted N1-cloud 2016-11-22 18:04:35 -08:00
Joris Pelgröm 55fc10b513 Rename Google Apps to G Suite in onboarding (#3047)
Google renamed Google Apps (both 'normal' and education editions) to G
Suite on 2016-09-29. See
https://blog.google/products/g-suite/all-together-now-introducing-g-suite/
for the announcement. Updated text for account selection to match Google's
branding.
2016-11-14 10:53:47 -08:00