Commit graph

4020 commits

Author SHA1 Message Date
Evan Morikawa dd2acf4b74 bump(electron): to 1.4.12 from 1.4.5 2016-12-15 13:24:28 -05:00
Evan Morikawa d1c587a01c fix(spec): add support for async specs and disable misbehaving ones
More spec fixes

replace process.nextTick with setTimeout(fn, 0) for specs

Also added an unspy in the afterEach

Temporarily disable specs

fix(spec): start fixing specs

Summary:
This is the WIP fix to our spec runner.

Several tests have been completely commented out that will require
substantially more work to fix. These have been added to our sprint
backlog.

Other tests have been fixed to update to new APIs or to deal with genuine
bugs that were introduced without our knowing!

The most common non-trivial change relates to observing the `NylasAPI` and
`NylasAPIRequest`. We used to observe the arguments to `makeRequest`.
Unfortunately `NylasAPIRequest.run` is argumentless. Instead you can do:
`NylasAPIRequest.prototype.run.mostRecentCall.object.options` to get the
`options` passed into the object. the `.object` property grabs the context
of the spy when it was last called.

Fixing these tests uncovered several concerning issues with our test
runner. I spent a while tracking down why our participant-text-field-spec
was failling every so often. I chose that spec because it was the first
spec to likely fail, thereby requiring looking at the least number of
preceding files. I tried binary searching, turning on and off, several
files beforehand only to realize that the failure rate was not determined
by a particular preceding test, but rather the existing and quantity of
preceding tests, AND the number of console.log statements I had. There is
some processor-dependent race condition going on that needs further
investigation.

I also discovered an issue with the file-download-spec. We were getting
errors about it accessing a file, which was very suspicious given the code
stubs out all fs access. This was caused due to a spec that called an
async function outside ot a `waitsForPromise` block or a `waitsFor` block.
The test completed, the spies were cleaned up, but the downstream async
chain was still running. By the time the async chain finished the runner
was already working on the next spec and the spies had been restored
(causing the real fs access to run).

Juan had an idea to kill the specs once one fails to prevent cascading
failures. I'll implement this in the next diff update

Test Plan: npm test

Reviewers: juan, halla, jackie

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

Disable other specs

Disable more broken specs

All specs turned off till passing state

Use async-safe versions of spec functions

Add async test spec

Remove unused package code

Remove canary spec
2016-12-15 13:02:00 -05:00
Christine Spang 1f2b162d0a fix(rendering): Don't set a class on plaintext pre wrapping
Our HTML sanitizer that we run bodies through before rendering
strips off this class, so it's not currently working with the
class set. Since this CSS is specific to the email frame, should
be OK to have no class at all.
2016-12-14 20:35:51 -08:00
Halla Moore ace6cf4c9e feat(showDetails): Allow a "Show Details" option on error dialogs
Summary:
Pass in more details on sending errors, so that they can be viewed
more easily by clicking "Show Details", rather than having to check
the worker window console.

Test Plan: tested locally

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D3505
2016-12-14 13:02:18 -08:00
Juan Tejada 9b9df21c93 fix(script/bootstrap) Properly remove already present lns + error handling 2016-12-13 17:57:54 -08:00
Jackie Luo cb9802daf2 fix(tracking): Update server URLs and send MESSAGE_ID 2016-12-13 12:54:25 -08:00
Evan Morikawa 41c893cc17 Move old edgehill src/pro into K2/packages/nylas-private
Summary:
feat(bootstrap): automatically init submodule if able

fix(bootstrap): symlink arc instead of copy

Test Plan: test

Reviewers: juan

Differential Revision: https://phab.nylas.com/D3494
2016-12-12 10:38:43 -05:00
Evan Morikawa eb7f3c90e6 feat(bootstrap): automatically init submodule if able 2016-12-12 10:22:40 -05:00
Evan Morikawa 2650613ef1 Move old edgehill src/pro into K2/packages/nylas-private 2016-12-12 10:10:26 -05:00
Evan Morikawa 9cf05c780e bump(k2) 2016-12-09 11:15:38 -08:00
Evan Morikawa 6bdbcbadc7 bump(k2) 2016-12-09 11:13:23 -08:00
Jackie Luo 2b36b6dfd5 feat(message-ids): Hash message IDs and replace in draft before sending 2016-12-08 17:50:48 -08:00
Evan Morikawa c16dd3784a fix(build): fix osx sign, fail on error, remove unnecessary k2 2016-12-08 14:18:44 -08:00
Jackie Luo 7499a06c28 feat(tracking): Add routes for open and link tracking 2016-12-08 13:42:47 -08:00
Evan Morikawa 19560f1e99 fix(SFDC): fix bug where opening new file would cause attachments to fail 2016-12-08 11:11:39 -08:00
Juan Tejada 4e40c0c55d bump submodule 2016-12-08 10:28:46 -08:00
Evan Morikawa 2bd3a29f6b bump(k2) 2016-12-07 17:50:09 -08:00
Halla Moore 25652fea60 bump(submodules) 2016-12-07 17:14:14 -08:00
Halla Moore 372f0ee987 bump(src/pro) 2016-12-07 16:50:04 -08:00
Juan Tejada 548fc7b1ba bump submodule 2016-12-07 16:16:59 -08:00
Juan Tejada 6f44630f96 fix(tasks): Add syncback-task-api-request to keep track of K2 tasks
This commit adds a new request type: SyncbackTaskAPIRequest.
This API request is meant to be used for requests that create a
SyncbackRequest inside K2.
When the initial http request succeeds, this means that the task was created,
but we cant tell if the task actually succeeded or failed until some time in
the future when its processed inside K2's sync loop.

A SyncbackTaskAPIRequest will only resolve until the underlying K2 syncback
request has actually succeeded, or reject when it fails, by listening to
deltas for ProviderSyncbackRequests

THis commit also updates N1's tasks that create syncback requests to use
this new type of request
2016-12-07 16:13:36 -08:00
Halla Moore 1f36388b93 update(send): Pass in the upload data that local-sync expects
Since local-sync can access the same targetPaths as N1, there's
no need to create actual File instances anymore. Pass just the
upload data in the API request, and remove SyncbackDraftFilesTask
since it is no longer necessary.
2016-12-07 14:19:07 -08:00
Evan Morikawa 476bbb0e5f feat(auth): add better error state handling 2016-12-07 10:11:22 -08:00
Christine Spang ee3e77c6c3 bump(k2) 2016-12-07 07:26:18 -08:00
Christine Spang 988c6022da feat(k2): Wrap lines on preformatted text
Summary:
We now use <pre> tags to preserve whitespace in plaintext emails,
but it's annoying when there are long lines that force a scroll
bar. Wrap them instead.

Test Plan:
looked at some emails. Not sure this isn't going to break something
           weird---is <pre> used in anything else?

Reviewers: bengotow

Differential Revision: https://phab.nylas.com/D3484
2016-12-06 17:47:51 -08:00
Evan Morikawa f170d14b8d fix(errors): properly rethrow api error 2016-12-06 17:21:37 -08:00
Jackie Luo 0e388d5c8c rm(send-successful): Remove NotifyPluginsOfSendTask 2016-12-06 16:45:32 -08:00
Jackie Luo 8026d1e1a5 fix(spelling): Correct references 2016-12-06 16:05:05 -08:00
Evan Morikawa 4593e770cd refactor(build): update build to install with right env for k2 packages 2016-12-06 16:03:44 -08:00
Evan Morikawa e595590a9a refactor(auth): DRY auth 2016-12-06 16:03:42 -08:00
Juan Tejada eb1c7aadf5 bump submodule 2016-12-06 15:54:58 -08:00
Juan Tejada d08da72ae2 fix(k2) Ensure order correct order when running syncback requests
When running syncback requests, if a task is meant to change the UID of
a message (e.g. move it to a new folder), that task should be run after
other tasks that don't affect the UID. Otherwise, when trying to run the
other tasks, they would reference a UID that is no longer valid.

This commit will make sure that we run any tasks that will change message uids last,
/and/ make sure that we don't run more than 1 task that will affect the uids of
the same messages in a row (i.e. without running a sync loop in between)
2016-12-06 15:45:46 -08:00
Juan Tejada 68e596bdf4 [local-sync] Correctly sync folders and labels
This commit will correctly keep track of folder and label ids when
creating them from N1.

Previously, when we sent the request to create a folder or label to our api,
we would immediately get back a serverId because it was created optimistically
in the back end— given that K2 is strictly non-optimistic, we won’t have a serverId
until some undetermined time in the future, and we need to somehow reference
the object that /was/ optimistically created in N1 to update the ui when
we do get the server id.

Since we can deterministically generate ids for folders and labels,
we "guess" what its going to be, and include it in the props of the syncback request
returned to N1. This is the simplest solution to get thing working
correctly right now, but we’ll need to revisit this in the future for
other types of objects (drafts, contacts, events), and revisit how we
will manage optimistic updates in N1 when we merge the 2 codebases
with K2 (given that K2 was designed to be non-optimisitc).
2016-12-05 18:57:13 -08:00
Evan Morikawa 3e54c37edb bump(k2) 2016-12-05 17:30:56 -08:00
Evan Morikawa d624f6657a fix(key): only migrate if key doesn't exist 2016-12-05 17:28:37 -08:00
Evan Morikawa ace9b94053 feat(key): use unified key manager 2016-12-05 17:19:19 -08:00
Christine Spang a04dca2755 add watchman config file for fast fuzzy find 2016-12-05 16:23:48 -08:00
Jackie Luo 871eb524ec fix(nylas-api): Correct some imports and remove tests for plugin auth 2016-12-05 11:37:27 -08:00
Ben Gotow 2e995c344c bump(submodule) 2016-12-05 10:19:50 -08:00
Ben Gotow b0b231094d fix(deltas): Minor tweaks to metadata delta processing 2016-12-05 10:19:37 -08:00
Ben Gotow a9ccd7370c fix(deltas): Minor adjustments for thread deltas 2016-12-02 15:59:05 -08:00
Jackie Luo ad5a1a6316 refactor(nylas-api): Make requests with helpers 2016-12-02 15:51:38 -08:00
Ben Gotow 0e8829b929 fix linter errors 2016-12-02 15:44:52 -08:00
Evan Morikawa 7713a375eb bump(k2) 2016-12-02 18:02:08 -05:00
Evan Morikawa 1f63680fd1 refactor(plugins): use plugin name instead of appId 2016-12-02 17:34:42 -05:00
Ben Gotow db7f966f0f fix(metadata): Remove all plugin auth 2016-12-02 14:34:37 -08:00
Christine Spang a1a85e04be feat(metadata): Look up local thread IDs via message table when setting metadata
Since message IDs are now static but there's no good way to generate
static thread IDs while syncing an account from newest message first,
we give threads the ID of any message on that thread and, when setting
metadata, look up the local thread ID by first going through the
message table.
2016-12-02 14:13:58 -08:00
Evan Morikawa fcb36abbe8 fix(account): Remove unsupported account types 2016-12-02 16:44:44 -05:00
Evan Morikawa 7b44583ddc fix(folder): fix returning db transaction promise 2016-12-02 16:26:09 -05:00
Evan Morikawa 2b2c998dee feat(sync): let N1 be aware of provider synback requests 2016-12-02 16:15:17 -05:00