Commit graph

668 commits

Author SHA1 Message Date
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
dillon f4e3a941e7 feat(account-sidebar): move account switcher from the side to the top of the account sidebar. fixes T3546.
Summary: ready for final code review! @evan @bengotow

Test Plan: added some tests for the account switcher

Reviewers: evan, bengotow

Reviewed By: evan, bengotow

Maniphest Tasks: T3546

Differential Revision: https://phab.nylas.com/D2016
2015-09-14 15:05:33 -07:00
Ben Gotow 68827c041b fix(analytics): Submit account provider type, org unit and version string without commit hash to mixpanel 2015-09-14 14:26:18 -07:00
Evan Morikawa 345dd941a3 fix(reply): better coverge for reply-all participants
Summary:
Fixes: T3550
Fixes: T3504

Test Plan: many of them

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Subscribers: mg

Differential Revision: https://phab.nylas.com/D2017
2015-09-14 16:18:55 -04:00
Ben Gotow 1147c8a7f5 fix(atom-window): The worker window should also auto-reload on crash
Neverclose applies to both the main window and the worker window

T1640
2015-09-14 11:43:24 -07:00
Ben Gotow fd8b49ea9e fix(drafts): If a draft disappears during editing, re-save instead of blowing up (Sentry 2844, more.)
Summary:
Previously, if a draft was deleted while a DraftChangeSet had uncommitted changes, it would blow up trying to find the draft.

This is bad, and can happen in normal scenarios. There are several changes in this diff:

- The DraftChangeSet no longer retrieves the draft from the database before saving changes. Instead, the save logic is in the DraftStoreProxy which already has a version of the draft kept fresh by a subscription to the DraftStore.

- The SyncbackDraftTask already had logic for POSTing when a PUT to a draft returns a 404, so no new logic was necessary there. THe new "commit" logic causes us to put back the draft that was lost, and then when we save it we detatch it from it's serverId and re-save.

In manual testing, this transparently handles the case where you delete a draft from Gmail while editing it.

Test Plan: I've added 22 tests for the DraftChangeSet and DraftStoreProxy

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D2012
2015-09-14 11:30:16 -07:00
Ben Gotow 2709f2867e fix(offline): /Generally/ a timeout is a temporary error code. Only SendDraftTask should bail and tell the user the draft failed to send 2015-09-11 15:14:52 -07:00
Ben Gotow 08db0d61a9 cleanup(atom): Get rid of core.autoHideMenuBar option—we'll never show a menu bar on windows 2015-09-11 14:56:21 -07:00
Ben Gotow ece7f2e649 tweak(win32): Hide the app menu on Windows, show in a right-side button instead 2015-09-11 14:49:26 -07:00
Ben Gotow c7f38cc851 fix(spellcheck): Remove premature optimizations and avoid spellcheck on word being typed
Fixes T3537
2015-09-11 11:12:25 -07:00
Ben Gotow 1e705b9fb1 tweak(action-bridge): Always process.nextTick inbound IPC events, see comment 2015-09-10 18:50:14 -07:00
Ben Gotow 257540f2b4 fix(composer): Always open new composer windows from the main window so that AccountStore.current() is correct
Fixes T3479
2015-09-10 11:16:42 -07:00
Ben Gotow 47a891b48c fix(spellcheck): On Windows, right clicking a word doesn't select it
Summary: Minor tweaks so that the word is selected and spellcheck / replacement works

Test Plan: No test coverage at the moment - need to think about ways to test selection

Reviewers: evan, dillon

Reviewed By: dillon

Differential Revision: https://phab.nylas.com/D2006
2015-09-10 10:53:27 -07:00
dillon 8f71cee43b feat(categories): enable creating new labels and folders. addresses T3351.
Summary:
write tests for adding/removing existing labels and popover closing

add more tests

address code review comments

fix the tests

add test for creating label

add test for creating label and queueing change label task

add test for creating a folder

add syncback category task spec

make the rest of the tests pass

remove unnecessary parens

add a few more tests

add last test

Test Plan: added some tests. all tests green

Reviewers: bengotow, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2010
2015-09-10 10:34:09 -07:00
Ben Gotow 1fbebd3dff fix(scroll-region): Handle edge case where React nodes are not available (Sentry 2763) 2015-09-10 10:29:11 -07:00
Ben Gotow 3b342b2e20 fix(run-package-specs): Return if the user cancels out of the dialog (Sentry 812) 2015-09-09 17:26:34 -07:00
Evan Morikawa 558e2d4112 fix(search): fix UI issues with search and add test
Summary:
Fixes:
- Search bar dropdown doesn’t go away if you focus into a message
- If a search times out, it continues to display nothing
- Clicked “Inbox” from a search and it didn’t clear the search box

Test Plan: edgehill --test

Reviewers: dillon, bengotow

Reviewed By: dillon, bengotow

Differential Revision: https://phab.nylas.com/D2000
2015-09-09 16:04:13 -07:00
Evan Morikawa 792a9b4140 fix(style): ignore corrupt inline styles 2015-09-09 16:02:47 -07:00
Ben Gotow aa1c11f400 tweak(sheet-container): No deferred calls to setState! Will fix perf issues in another patch (Sentry 1525) 2015-09-09 15:55:30 -07:00
Ben Gotow 48f4667205 tweak(react-remote): If window is closed very quickly, do not send sizing (Sentry 2888) 2015-09-09 15:25:52 -07:00
Ben Gotow 21817887d6 fix(workspace): Pop to root sheet when switching view modes 2015-09-09 14:27:18 -07:00
Ben Gotow 0a98d4d075 fix(workspace-mode): Add to config schema so it defaults to list properly 2015-09-09 14:05:03 -07:00
Ben Gotow 6a0cb6a0b1 tweak(menus): "Enter" and "Exit" fullscreen instead of "Toggle" 2015-09-09 14:05:03 -07:00
Evan Morikawa 4080f63907 fix(syncback): Handle synback errors better
Fixes "Cannot read property "method" of undefined in SyncbackDraftTest.
Now with more specs!
2015-09-09 11:44:36 -07:00
Evan Morikawa 689c76922d fix(draft): DraftCountStore updates after send now 2015-09-08 18:32:35 -07:00
Ben Gotow efc283a94d fix(errors): Send 400 errors from the Nylas API to Sentry 2015-09-08 18:09:11 -07:00
Ben Gotow 16eb6fd07b fix(react-remote): Put a title on the container region
Fixes T3512
2015-09-08 14:03:59 -07:00
Ben Gotow a6c44d3e9f fix(mail-important): Fix broken specs when getStandardCategory('important') returns null 2015-09-08 13:45:46 -07:00
Evan Morikawa 395bd80da2 fix(draft-list): draft list removes draft when the message sends
Summary:
This started when I noticed that drafts weren't dissapearing from the
draft list after send. This was a pretty big bug because if you ever
clicked on one again and tried to re-send it would throw a 400 error
saying the draft id doesn't exist.

This uncovered a few fundamental issues with the DB.

First of all, the reason the draft list wasn't updating was because the DB
trigger that happened when we got in a new message, was being ignored
since the diff contained no drafts (it's now a message).

The bigger issue was that if you had a draft with only a clientId, gave it
a serverId, and tried to call "save", the REPLACE INTO method would not
update the old object, but rather create a second duplicate. This is
because the `id` field was being used as the PRIMARY KEY, and in this
case, that `id` field changed! The fix was to change the PRIMARY KEY to be
the `cilent_id` instead of the `id` and use that as the REPLACE INTO
index.

We still need the `id` field; however, because all of our reads depend on
that field usually being the serverId

Fixes T3507

Test Plan: See new and updated tests

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3507

Differential Revision: https://phab.nylas.com/D1992
2015-09-08 13:11:34 -07:00
Ben Gotow 3f3ec441ae feat(important): Improtant flags you can enable optionally for Gmail accounts
Summary: Fixes T3477

Test Plan: Tests are forthcoming

Reviewers: dillon, evan

Reviewed By: evan

Maniphest Tasks: T3477

Differential Revision: https://phab.nylas.com/D1990
2015-09-08 10:53:07 -07:00
Evan Morikawa e95cc44418 fix(draft): remove old local draft after sending
Fixes T3507
2015-09-06 18:59:07 -07:00
Evan Morikawa cc2dc8888b fix(draft): fix popout draft error & add tests
Fixes T3506
2015-09-06 14:55:06 -07:00
Ben Gotow dd58d793b7 fix(mixpanel): Also include app version and platform in people analytics 2015-09-04 15:33:57 -07:00
Ben Gotow 815a50dd32 fix(search): Fix for broken search display 2015-09-04 15:31:03 -07:00
Evan Morikawa f8cb9a81eb fix(db): remove db temp files as well 2015-09-04 14:34:24 -07:00
dillon 7126d708ca fix(token): drag and dropping a token no longer shows the plus sign. fixes T3390.
Test Plan: tested manually. all tests remain green.

Reviewers: bengotow

Maniphest Tasks: T3390

Differential Revision: https://phab.nylas.com/D1988
2015-09-04 14:17:37 -07:00
Evan Morikawa c018b12777 fix(draft): fix forwarding message with files and add spec 2015-09-04 12:53:46 -07:00
dillon 6f9e2194eb fix(mode-toggle): mode toggler now toggles the sidebar rather than the list/split view. fixes T3462.
Summary:
add functioning toggling

add correct hide/show behavior for toggler

remove old hide/show button

add padding to make buttons prettier

Test Plan: tested manually. all tests remain green.

Reviewers: evan

Reviewed By: evan

Maniphest Tasks: T3462

Differential Revision: https://phab.nylas.com/D1980
2015-09-04 12:32:19 -07:00
dillon 0e4eeef7f1 fix(thread-list): set min-width to threadlist. fixes T3435.
Summary: fix whitespace

Test Plan: added more test coverage

Reviewers: evan

Reviewed By: evan

Maniphest Tasks: T3435

Differential Revision: https://phab.nylas.com/D1982
2015-09-04 12:27:05 -07:00
Ben Gotow dfcb15c79e feat(starred): Replace FocusedContentStore with FocusedMailViewStore, allows for starred
Summary:
This diff fixes T3389 and makes it possible to define mail views which are not based on a category and focus them in the app.

I think that we need to create a new index on the starred attribute to make sure the query runs fast.

More tests WIP

Test Plan: Run tests, more coming soon!

Reviewers: dillon, evan

Reviewed By: evan

Maniphest Tasks: T3389

Differential Revision: https://phab.nylas.com/D1979
2015-09-04 12:23:15 -07:00
Evan Morikawa cea27cc8ce fix(composer): much better specs for composer & quoted text
Summary: Fixed a bug bug with the quoted text clearing the bodies on replies

Test Plan: all the tests

Reviewers: dillon, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1981
2015-09-03 19:41:56 -07:00
Ben Gotow cfbbf717fa fix(mixpanel): Critical fix for mixpanel users all having the same distinct_id alias
Summary: Mixpanel API misuse makes me sad.

Test Plan: No tests, but easy to check with Mixpanel.com

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D1978
2015-09-03 19:30:08 -07:00
Evan Morikawa 553e2bde2f feat(draft): drafts that fail to send throw better errors
Summary: Also enhancements to the developer toolbar

Test Plan: edgehill --test

Reviewers: dillon, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1976
2015-09-03 16:29:33 -07:00
Evan Morikawa 094fc800a2 bump(DB): update DB version to support new Metadata schema 2015-09-03 12:00:49 -07:00
Evan Morikawa ecaf25487c fix(quoted): if whole message is quoted text, then show it
Summary: Fixes T3476

Test Plan: New test

Reviewers: dillon, bengotow

Reviewed By: bengotow

Maniphest Tasks: T3476

Differential Revision: https://phab.nylas.com/D1974
2015-09-02 18:26:58 -07:00
Ben Gotow 4f8e85dad4 fix(Atom): Wait to send window:loaded until new loading process has finished (broken because of animation blocks) 2015-09-02 16:49:13 -07:00
Ben Gotow 9a5760252d fix(notifications): Switch account when necessary to display notification, avoid using CategoryStore which may not be ready
Fixes T2318 and fixes T3448
2015-09-02 16:31:50 -07:00
Ben Gotow a348e02052 fix(metadata): publicid => publicId 2015-09-02 14:36:33 -07:00
Ben Gotow 2ab78d2d9e fix(db): Run pragmas on all connections, not just worker one (which runs setup queries) 2015-09-02 12:31:38 -07:00
Evan Morikawa 819dc73d98 test(api): add specs for nylas api
Summary: Specs for nylas api

Test Plan: edgehill --test

Reviewers: dillon, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1973
2015-09-02 12:22:20 -07:00
Ben Gotow 7c5488755e fix(T3474): After authentication when main window already visible, close onboarding window
Summary: Fixes T3474

Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Maniphest Tasks: T3474

Differential Revision: https://phab.nylas.com/D1967
2015-09-02 11:02:18 -07:00
Ben Gotow 30bd2fbfd8 fix(iframe-resize): Subscribe to iframe window resize, adjust container height
Summary: Fixes T2095, iFrames resize when images load, when container is resized, etc.

Test Plan: Run tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Maniphest Tasks: T2095

Differential Revision: https://phab.nylas.com/D1964
2015-09-01 16:23:29 -07:00
Ben Gotow df23f567cd fix(db): Add index for draft count query, use sqlite timing profiler and log queries >100msec 2015-09-01 15:35:06 -07:00
Ben Gotow 1e22f49f43 fix(specs): Lazily require CategoryStore to fix broken tests 2015-09-01 15:32:36 -07:00
dillon ff7e72a361 fix(thread): thread.sortLabels() now ignores 'Sent Mail' and other unnecessary labels. fixes T3454.
Summary: NOTE: this ticket and this diff do not address turning the 'Important' label into a more user-friendly chevron. I created T3477 for that.

Test Plan: added more tests. however, seems like somebody merged some tests which are failing.

Reviewers: bengotow, evan

Reviewed By: evan

Maniphest Tasks: T3454

Differential Revision: https://phab.nylas.com/D1963
2015-09-01 14:47:22 -07:00
Ben Gotow 7690683366 fix(db): Use recommended page-size, cache size. Allow 80MB in RAM cache 2015-09-01 13:35:30 -07:00
Ben Gotow 954fac1160 fix(windows): Fix old references to windowManager 2015-09-01 12:14:15 -07:00
Evan Morikawa ba76663f5e feat(composer): sanitizes and inlines CSS styles for replies and fwd 2015-09-01 11:53:38 -07:00
Evan Morikawa b3134a040c fix(sidebar): fix case when category comes back as null 2015-09-01 06:18:11 -07:00
Evan Morikawa 5fa91c67c1 fix(mailto): fix incorrect calling of draft popout from mailto 2015-09-01 06:05:52 -07:00
Evan Morikawa e68ecc66b4 fix(preferences): add window title to preferences
Fixes T3458 Preferences panel shows up as "Electron" in Window menu
2015-08-31 17:25:33 -07:00
Evan Morikawa 8b86973a82 fix(regex): allow "=" in valid email address
Fixes T3440 Email formatting validation bug
2015-08-31 15:48:39 -07:00
Evan Morikawa 73dc68e46e feat(work-window): give work window a standard toolbar
Fixes T3457 "Activity" window needs a close affordance
2015-08-31 15:43:47 -07:00
Ben Gotow e94e76d10a fix(file-uploads): Critical fix to bad method call to session.draft instead of session.draft() 2015-08-30 20:18:05 -07:00
Ben Gotow ad4bc1c7ac fix(file-uploads): Do not store the draft session and draft during upload 2015-08-30 20:17:16 -07:00
Evan Morikawa 75e8eddbb6 fix(uploads): no more from picker & uploads use correct accountId
Test Plan: edgehill --test

Reviewers: dillon, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1955
2015-08-28 20:35:43 -04:00
Ben Gotow 4fddec48d9 fix(keyboard-cursor): Recent optimization broke keyboard cursor advancing fast 2015-08-28 14:34:56 -07:00
Evan Morikawa 157c048ca0 feat(sync): Resume sync worker action from sidebar 2015-08-28 16:24:39 -04:00
Ben Gotow 07583d6f11 fix(send-draft): Update the draft rather so it's clientId is maintained, even if the ID has changed on send 2015-08-28 13:19:09 -07:00
Ben Gotow e09b43d55f fix(nylas-api): When receiving models, ignore changes that would make non-drafts into drafts 2015-08-28 13:04:40 -07:00
Ben Gotow 944a5838d8 fix(specs): Future specs should stub DatabaseStore.run, not find/findBy 2015-08-28 12:41:56 -07:00
Ben Gotow d76766fa38 fix(atom): Put displayWindow back - it's used in other places 2015-08-28 12:25:48 -07:00
Ben Gotow dc613851bc fix(model-observation): Watch for changes to objects with matching clientIds, since server id may be assigned 2015-08-28 12:25:48 -07:00
Ben Gotow 182333e7f4 fix(sending): Since we have a unique index on clientId, no need to delete draft after sending 2015-08-28 12:25:48 -07:00
Evan Morikawa b056ddd514 refactor(packages): Remove Edgeforce 2015-08-28 15:16:32 -04:00
Evan Morikawa cd8aa49e7d fix(database): report if database errors on setup 2015-08-28 14:44:40 -04:00
Ben Gotow 6d6b5ec8f2 fix(draft): Always retrieve draft body when using clientId 2015-08-28 11:43:30 -07:00
Ben Gotow f8c5f7b967 refactor(db): change ID system to have clientIDs and serverIDs
Summary: Major ID refactor

Test Plan: edgehill --test

Reviewers: bengotow, dillon

Differential Revision: https://phab.nylas.com/D1946
2015-08-28 11:24:29 -07:00
Ben Gotow 9d995ded67 feat(work): Create the "Work" window, move TaskQueue, Nylas sync workers
Summary:
Move sync workers and Edgehill token checks to work window

Move the task queue and database setup to the work window

Move ContactStore background refresh to work window

Store the task queue in the database

WIP

The TaskQueue now puts tasks in the database instead of in a file, which also means it can be observed

Move all delta sync and initial sync to a package, make NylasSyncStore which exposes read-only sync state

DraftStore no longer reads task status. Once you set the "sending" bit on a draft, it never gets unset. But that's fine actually.

If your package lists windowTypes, you *only* get loaded in those windowTypes. If you specify no windowTypes, you get loaded in the root window.

This means that onboarding, worker-ui, worker-sync, etc. no longer get loaded into the main window

ActivitySidebar has a special little store that observes the task queue since it's no longer in the window

Move "toggle component regions" / "toggle react remote" to the Developer menu

Move sync worker specs, update draft store specs to not rely on TaskQueue at all

Test Plan: Run existing tests, all pass

Reviewers: dillon, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1936
2015-08-27 16:39:40 -07:00
Ben Gotow dd3d255252 fix(perf): Apply accountId to more queries, always run query plans in dev mode to flag SCANs 2015-08-26 14:10:28 -07:00
Ben Gotow be6c5b1d11 fix(change-mail-task): Ignore 404s when changing mail so that we don't attempt to roll back and re-create purged objects + spec 2015-08-26 11:54:03 -07:00
Ben Gotow 75d92ad35a fix(delta-sync): Properly look up model types, add specs for all this logic
Summary: Emergency fix for broken logic consuming delta updates. Also includes specs for untested functionality.

Test Plan: Run new tests

Reviewers: dillon, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1939
2015-08-26 11:43:10 -07:00
Ben Gotow 49d3366b46 fix(T3427): Trying to deserialize dropped contacts using the registry fails because they were not serialized with the registry
Summary:
Fixes T3427

Use the more generic serialize registered objects instead of the DatabaseObjectRegistry directly.

Fix a bug in the serialize function that was preventing it from inflating the top level object if it had a constructorName.

Remove contact checks because tokenizing-test-field is generic. Participant text field checks type.

Hot new drag and drop integration test

Test Plan: Run new test (<3 react)

Reviewers: dillon, evan

Reviewed By: dillon, evan

Maniphest Tasks: T3427

Differential Revision: https://phab.nylas.com/D1933
2015-08-26 10:07:23 -07:00
Ben Gotow 2a95a47c4f fix(before-unload): When drafts are present, we do not resume quit properly after committing changes
Summary:
We designed the onBeforeUnload handler to resume a "close window" event, but it actually needs to resume a quit as well. This has become an issue recently and may be due to the DraftStore sessions not being removed from the DraftStore.

To test: Create a popout draft, close it, and then try to quit the app.

Test Plan: Run updated tests

Reviewers: dillon, evan

Reviewed By: dillon, evan

Differential Revision: https://phab.nylas.com/D1932
2015-08-26 10:00:20 -07:00
Ben Gotow bb887a4ae8 fix(config): Apply config change from Atom, process locking
Summary:
d1c44dcb54

Also lock config across processes to prevent the user from being logged out when the main process reads config before it's finished writing. This is what is causing the login window to appear.

Test Plan: Rapidly tap between the two display modes. Note that it no longer reverts to the wrong one intermittently.

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1931
2015-08-25 16:00:09 -07:00
Ben Gotow 13087a0dc8 fix(draft-account-switching): Need to totally delete draft threadId and replyToMessageId 2015-08-25 12:23:27 -07:00
Ben Gotow 78c8b85558 fix(sentry-2523): Console.warning is not a method 2015-08-25 11:45:07 -07:00
Ben Gotow 3a98bc5d90 fix(mixpanel): Correctly associate events with distinct_ids 2015-08-25 11:33:36 -07:00
Ben Gotow a099e677e0 fix(button-dropdown): Broken styles on reply/reply-all button dropdown 2015-08-24 17:31:03 -07:00
Ben Gotow d25dc9b879 fix(database): Allow findVersions to be called with more than 250 items 2015-08-24 14:01:31 -07:00
Ben Gotow d28af3075e fix(task-queue): Rename the task queue file to avoid upgrade issues 2015-08-24 10:51:50 -07:00
Ben Gotow 0af18c9f2e fix(add-account): Don't check for tokens from secondary windows 2015-08-21 18:23:24 -07:00
Ben Gotow c639b85fad fix(object-serialization): Constrain use of __constructorName, fix infinite recursion, remove hackiness 2015-08-21 16:08:24 -07:00
Ben Gotow 607ca3bf10 feat(accounts): Kill namespaces, long live accounts
Summary:
This diff replaces the Namespace object with the Account object, and changes all references to namespace_id => account_id, etc. The endpoints are now `/threads` instead of `/n/<id>/threads`.

This diff also adds preliminary support for multiple accounts. When you log in, we now log you in to all the attached accounts on edgehill server. From the preferences panel, you can auth with / unlink additional accounts. Shockingly, this all seems to pretty much work.

When replying to a thread, you cannot switch from addresses. However, when creating a new message in a popout composer, you can change the from address and the SaveDraftTask will delete/re-root the draft on the new account.

Search bar doesn't need to do full refresh on clear if it never committed

Allow drafts to be switched to a different account when not in reply to an existing thread

Fix edge case where ChangeMailTask throws exception if no models are modified during performLocal

Show many dots for many accounts in long polling status bar

add/remove accounts from prefs

Spec fixes!

Test Plan: Run tests, none broken!

Reviewers: evan, dillon

Reviewed By: evan, dillon

Differential Revision: https://phab.nylas.com/D1928
2015-08-21 15:29:58 -07:00
Evan Morikawa c9c552a56f fix(message): update MessageBodyProcess to key on message version 2015-08-20 16:44:13 -07:00
Evan Morikawa eb7fc24b96 fix(thread): fix bug whereby thread list blows up if no "from" 2015-08-20 16:21:47 -07:00
Evan Morikawa d2b979e716 refactor(models): Enables 3rd party plugins to add Models & Tasks
Summary:
Adding serialzable registry

Added DatabaseObjectRegistry

rename modelReviver to deserializeObject

Consolidate deserizlie

Get rid of model methods from Utils

DatabaseRegistry change notifications

Logic to throttle database refresh requests

Fixes in nylas-exports

Silent model setup

Continue to resolving the database setup phase for non main windows.

A packages `activate` method does not actually get called until the
DatabaseStore says that it's ready. This is necessary to ensure that a
package that introduces database changes has those schema changes take
hold before the activate happens.

However, in windows like the `onboarding` window that do not depend on a
database at all, there is no setup that is run and the promise use to
never resolve thereby making the packages never activate.

In this case, any external windows will go ahead and let their packages
activate.

Check subclass instead of instance!

Use the correct types for "messages" and "drafts"

Move Salesforce models

Proper references to Model and Attributes

Convert Salesforce stores to NylasStores and fix paths

Move database setup to DB

Test Plan: todo

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1899
2015-08-19 16:25:56 -07:00
Evan Morikawa a7b652a31d fix(iframe): catch relative and malformed uris
Summary:
Fixes T3252

When links were clicked with malformed, relative, or malicious href links
we'd perform default behavior instead of catching them.

If you have href="www.foo.bar" the browser by default thinks it's a
relative link. In our case it would prepend the full default base URI
which is file://path/to/edgehill. This would at best fail to do anything
and at worst execute an arbitrary file.

We now blacklist `file:` and check for the existence of a valid RFC 3986
schema on the URI.

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T3252

Differential Revision: https://phab.nylas.com/D1888
2015-08-19 10:20:41 -07:00
Ben Gotow 5b0c82abb1 fix(keymaps): JSON => CSON during cibuild final phase 2015-08-18 14:50:53 -07:00
dillon 07996da960 add more test coverage and refactor checking if a contact is the current user. fixes T3360.
Summary: @evan -- would love to get your opinion on this approach!

Test Plan: add new tests

Reviewers: evan

Reviewed By: evan

Subscribers: evan

Maniphest Tasks: T3360

Differential Revision: https://phab.nylas.com/D1904
2015-08-18 10:18:30 -07:00
Ben Gotow 920e7575fa perf(drafts): Cache results of running Autolinker, avoid props.children for EmailFrame, fix special case for new draft
Summary:
"results.length" not "result.length".

Eventually I want MessageBodyProcessor to be the public interface to another process which asynchronously runs message body parsing? At the very least, caching the results means that miscelaneous refreshes to the message list don't incur significant string processing cost.

Test Plan: No new tests here

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1898
2015-08-17 16:23:12 -07:00
Ben Gotow 6f46df3141 fix(sentry-archive): Import Actions into ThreadListQuickActions 2015-08-17 14:51:03 -07:00
Ben Gotow 5ea02ead4f fix(preferences): Display multiple keybindings when available 2015-08-14 16:41:52 -07:00
Ben Gotow c661f5cb73 fix(preferences): Windows / Linux styling and adjustments 2015-08-14 16:24:53 -07:00
Ben Gotow 79b6c1d94a feat(preferences): WIP Preferences panel
Summary:
Things still to come:
- General tab
- Signatures tab (potentially remove and land)

Adding emacs things to gitignore

Adding progress. iterating on html/css is incredibly painful

Added layout for accounts page.

Adding layout for appearance page

layout for shortcuts preferences page

adding layount for notifications menu

Adding signatures layout

WIP

WIP - tab switching, accounts tab

WIP ALL THE THINGS

Keymap template support (Gmail / outlook, etc.)

Test Plan: No tests atm

Reviewers: evan

Differential Revision: https://phab.nylas.com/D1890
2015-08-14 15:40:11 -07:00
EthanBlackburn 0bf41985cb Using All Mail folder as archive in Gmail
Summary: Archive folder does not exist in Gmail. Instead, use the all mail folder

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1891
2015-08-14 09:40:07 -07:00
Ben Gotow e8b1e98e60 fix(sync-worker): Fix specs, add one testing backoff 2015-08-13 11:20:36 -07:00
Ben Gotow 56ad7603b9 fix(sync-worker): Replace basic "every 20 seconds" retry logic with linear backoff to five minutes
This helps guard against us DDOSing ourselves when the server is intermittently returning bad responses.
2015-08-11 12:28:53 -07:00
dillon 9bf265bfc5 add a fix, TODO: refactor
Summary: fix(service): Remove redundant tail newline when hiding previous in compose view. Fixes T2467.

Test Plan: Added a test to verify that all tail newlines are removed except one. Added another to verify that non-tail newlines aren't removed. Tweaked an existing test to make it pass.

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T2467

Differential Revision: https://phab.nylas.com/D1864
2015-08-11 11:35:33 -07:00
dillon e6f1b14a6a fix mailto query string to allow 'Subject' as a valid key
Summary: Allow 'Subject=' and 'SUBJECT=' as valid keys for 'mailto:' links.

Test Plan: Didn't break any tests, so I added a few.

Reviewers: bengotow

Reviewed By: bengotow

Maniphest Tasks: T2415

Differential Revision: https://phab.nylas.com/D1865
2015-08-11 11:22:35 -07:00
Ben Gotow 8edbec2dd6 fix(db): Bump the database schema version 2015-08-10 19:06:49 -07:00
Ben Gotow be669de66d fix(multiselect-list): Only show loading dots when list source is empty
Fixes T1118
2015-08-10 15:09:53 -07:00
Ben Gotow 31b08a82f4 fix(attachments): Do not parse file downloads as UTF8
Fixes T3188 and adds specs for API request construction in FileDownloadStore.Download
2015-08-10 13:36:16 -07:00
Ben Gotow 0688da5541 fix(specs): Fixes for failing specs 2015-08-06 14:35:52 -07:00
Ben Gotow 0c8aa06617 fix(file): file.displayExtension should return lowercased extension
T2874
2015-08-06 13:59:30 -07:00
Ben Gotow 59878d0dcf fix(contact-parsing): Remove quotes around parsed names
Typing or pasting `"John A" <aaa@market76.com>` should give you John A without the surrounding quotes.
2015-08-06 13:39:49 -07:00
Ben Gotow e4a4a83cb4 fix(nylas-api): The _delta property was not correctly associated with deltas 2015-08-06 12:22:24 -07:00
Ben Gotow d0b7f2b0dd feat(database): Save and retrieve arbitrary json blobs to database
This fixes T2233, which was caused by the main window trying to write config.cson very often as initial sync happened, and the parent process trying to observe those changes on disk to watch for the user's API key being removed. Further refactoring would be good but this will fix it.
2015-08-06 12:21:24 -07:00
Ben Gotow 67281430f0 fix(mail-tasks): Bad bug involving wrong call to increment/decrement locks 2015-08-06 12:19:13 -07:00
Ben Gotow 7049d6c474 fix(contact-search): Also match domains
Fixes T2468
2015-08-06 10:45:17 -07:00
Ben Gotow 8661695224 fix(focus): Use BrowserWindow focus/blur, not window focus/blur
Summary: Previously, you could actually click a message iFrame to blur the toolbar, which made no sense. See http://stackoverflow.com/questions/24619114/identifying-window-focus-blur-events-with-iframes

Test Plan: No tests

Differential Revision: https://phab.nylas.com/D1848
2015-08-06 10:40:18 -07:00
Ben Gotow abbf6bc8d8 fix(drafts): Fix rapid draft creation and deletion issues 2015-08-05 17:40:33 -07:00
Ben Gotow f3bea721e7 fix(labels/folders): Temporarily disable changing nested messages
- It's slow, and causes performLocal to take much longer
- It's making changes we receive from the streaming API a few moments later
- We don't actually display nested folder data anywhere important
2015-08-05 17:39:48 -07:00
Ben Gotow 7f94680550 perf(*): Add indexes, optimize "shouldAcceptModel", optimize Tasks
Summary:
Consolidate the smarts from ChangeFolderTask into a generic ChangeMailTask

ChangeMailTask:
   - only makes requests for threads / messages that actually changed
   - handles incrementing / decrementing locks
   - writes changes to the database in a single pass, and only writes modified models
   - encapsulates the undo state that was built into ChangeFolderTask

This change means that ChangeLabelsTask enjoys the same "smarts" as ChangeFolderTask. Label changes resulting in no-ops do not create web requests, you can undo label changes and they go back to the correct previous state.

Replace "UpdateThreadsTask" and "UpdateNylasObjectsTask" with subclasses based on the same code used for folder/labels

This means that the naming and parameter sets are consistent for all thread/message changing tasks. It also means that starring/marking as use the same (tested) business logic and starring 999 already-starred threads doesn't create 999 requests.
Go away DraftCountStore - nobody wants you in secondary windows

Add "Debug query plans" option which prints out the steps the database is taking. Look for "SCAN" to now you're having a bad time.

Make "version" field queryable, when we receive deltas/API response, find all versions of existing models in a single query without loading or parsing the objects

Contact: Add index for lookup by email

Label: add index for lookup by name

Message: Add index for message body join table

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1840
2015-08-05 15:53:08 -07:00
Evan Morikawa 0fc50230e7 fix(folder): require Task object 2015-08-04 14:41:27 -07:00
Ben Gotow dc727f0867 fix(reply-all): Fix edge case where same person in CC/To causes error when replying-all 2015-08-04 13:57:12 -07:00
Ben Gotow b54bf9feaa fix(iframe): allowDefault for events within message iFrames, just not link clicks 2015-08-04 13:37:05 -07:00
Evan Morikawa d984071ac7 fix(folder): specs and fixes to ChangeFolderTask
Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1834
2015-08-03 19:09:41 -07:00
Ben Gotow 34171b0017 fix(threads): Use last_message_timestamp fallback until migration has completed 2015-08-03 18:52:07 -07:00
Ben Gotow 7968f26282 fix(draft-scroll): Ignore composer scroll requests while moving to new draft 2015-08-03 18:39:11 -07:00
Ben Gotow 3d01004f77 fix(query): Properly escape single quotes in SQLite 2015-08-03 17:36:49 -07:00
Evan Morikawa 5d95feaf9b feat(message-list): better sending state
Summary:
We now have a `MessageItemContainer` class that handles the logic of
deciding what kind of message to show. We introduce a new `PendingMessage`
(which is just a sublcass of `MessageItem`) that has the spinner and
stuff.

Also tests

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1833
2015-08-03 17:19:07 -07:00
Ben Gotow e68a139f4d fix(*): Minor performance tweaks and fixes to category picker
Summary:
fix(undo-redo): UndoRedoComponent does not take props

fix(category-picker):

- Use Actions.queueTask like the rest of the app so UndoRedoStore can see it. Can change this in the future but it's currently the only place in the app we directly queue tasks.

- Stop subscribing to the FocusedContentStore / FocusedCategoryStore (which are not used in setState?) since we receive threads as props

- Rename categoryDatum to item because it's not a category. (Was super confused that categories were becoming JSON in `_extendCategoryWithDisplayData`) Give item a category property so that tasks can specify items and not IDs (allows for better descriptions like "Moved one thread to Archive"

Add simple shouldComponentUpdate to retina-img

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1832
2015-08-03 17:05:31 -07:00
Ben Gotow 3a947ccf54 fix(undo-redo): Minor tweaks to undo/redo based on testing - see description
Summary:
Give UpdateThreadsTask a description method for strings like "Marked as read"

Give ChangeLabelsTask a better description method that returns shorter strings and is specific when possible

Give ChangeFolderTask a more specific description and don't assume folderOrId will always be a folder

Make it so that passive "mark as read" from the message store isn't undoable

Give the base class a description method that names the object

Change UndoRedo component CSS a bit:

- Use "inline-flexbox" with a max-width so that we can define shrinking rules on the label and Undo button (label gets ellipsis, button does not shrink at all)

- Avoid left:39%, since it assumed that the undo-redo element would be 22% of the width of the thread list, which wasn't always true. Instead, make the `undo-redo-manager` container "text-align:center", so the `undo-redo` div is always centered within it.

- Add `cursor:default` so that the user sees the pointer, not the text insertion cursor when hovering over "Undo"

- Add overflow / text-overflow so that if the message is ever too long, the user sees `...` ellipsis properly.

Test Plan: Run a few new tests

Reviewers: evan, ethanb

Reviewed By: ethanb

Differential Revision: https://phab.nylas.com/D1830
2015-08-03 14:46:19 -07:00
Ben Gotow 4e7b4caf81 fix(assertions): Add earlier checks for bad queries, invalid local links 2015-08-03 14:45:47 -07:00
Ben Gotow b7e314ac62 fix(contact-chips): Contact chips are editable and have much better style
Summary:
The TokenizingTextField has several new optional props, including onEdit, which enables
editing of the tokens and tokenIsInvalid, which allows you to make tokens red, while still
accepting them as tokens.

When you go to send a message with invalid recipients it won't let you until you remove/
edit them.

Hotloading

Edit chips, keymappings not through command registry, 7 new tests for editing chips

Test Plan: Run 7 new tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1825
2015-08-03 13:06:28 -07:00
Ben Gotow 5843c260f3 fix(first-responder): Apply changes from Atom to window-event-handler
Applies a4d716c491 to our code.

Fixes https://sentry.nylas.com/sentry/edgehill/group/1716/
2015-08-03 11:56:12 -07:00
Ben Gotow b148ea54e2 fix(multiselect-list): Occasionally, no dataView or handler is defined for MultiselectList
Fixes https://sentry.nylas.com/sentry/edgehill/group/1710/
2015-08-03 11:38:57 -07:00
Ben Gotow 17c00c0e54 fix(change-category): Redefine objectIds when objects cannot be found
Fixes https://sentry.nylas.com/sentry/edgehill/group/1717/
2015-08-03 11:38:57 -07:00
Evan Morikawa b434778e39 fix(scroll): don't scroll to region if node doesn't exist 2015-08-03 10:56:43 -07:00
Evan Morikawa e050c198d9 test(folders): adding specs for changing folders and labels
Summary:
ChangeLabelsTask specs

adding change folders task

Adding tests for ChangeFolderTask

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1806
2015-08-03 10:16:46 -07:00
Ben Gotow d9a1c1aec7 fix(streaming): Tell the API we want folder/label deltas 2015-07-31 18:54:40 -07:00
EthanBlackburn 9b3fcfc19a Merge branch 'master' of github.com:nylas/edgehill into receivedrecentdate-sent-folder-fix 2015-07-31 13:59:05 -07:00
EthanBlackburn 587fc989f6 Removed print statements 2015-07-31 13:58:40 -07:00
EthanBlackburn 2814a0bc70 UndoRedoButton now shows
Summary: A notification now appears at the bottom of the window when the user performs an action that can be undone

Test Plan: Tested manually

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: mg

Differential Revision: https://phab.nylas.com/D1820
2015-07-31 13:12:47 -07:00
EthanBlackburn d050abd16a Merge branch 'master' of github.com:nylas/edgehill into receivedrecentdate-sent-folder-fix 2015-07-31 12:38:53 -07:00
Ben Gotow 12a2836ec9 fix(T2387): Use better file icons from SDW
Summary:
fix misc spec failure by making event store fetch immediately on setup

add specs for displayExtension, displayName

Test Plan: Run new tests

Reviewers: evan

Maniphest Tasks: T2387

Differential Revision: https://phab.nylas.com/D1821
2015-07-31 12:34:24 -07:00
Ben Gotow 431a1adbec fix(specs): Resolve merge issues in specs 2015-07-31 12:06:34 -07:00
EthanBlackburn 3e01a10758 Fixed bug where items in sent folder have "invalid date" 2015-07-31 08:23:03 -07:00
Ben Gotow 24550b0f88 feat(contact-ranking): Use /contacts/rankings in the Contact Store
Summary:
- New JSONCache class hides logic around saving/loading rankings from a file
- Contacts are sorted whenever they're loaded so the runtime of searchContacts is still O(limit * n)

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1793
2015-07-30 18:31:25 -07:00
Ben Gotow b054ed431d fix(message-list-scrolling): Move scroll logic to ScrollRegion
Summary: This is still a work in progress and needs more specs

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1808
2015-07-30 18:29:38 -07:00
Ben Gotow c294eb5df4 fix(sqlite): Connect to sqlite directly rather than sending queries over IPC (twice...)
Summary:
- We now build sqlite3 manually from source in script/bootstrap
- We now allow queries to run in parallel outside of transaction blocks

- When signining in and out, the main window creates the database file and then advances the database "phase", which allows all the windows to connect to the initialized database.

This diff also fixes T2411 where popout drafts opened twice, and several issues around Windows icons and install.

Test Plan: Run existing tests

Reviewers: evan

Reviewed By: evan

Maniphest Tasks: T2411

Differential Revision: https://phab.nylas.com/D1815
2015-07-30 18:09:20 -07:00
Ben Gotow b6f85e9b56 fix(T2338): You can now use keyboard shortcuts on focused BrowserWindows
Fixes T2338, and also removes a bit of dead code
2015-07-30 17:32:21 -07:00
Ben Gotow 1ff1c4055a fix(T2408): On the Mac, show open / save dialogs as sheets
Fixes T2408
2015-07-30 16:34:25 -07:00
EthanBlackburn 6609fe272c RSVP tile for events on messages
Summary: RSVP tile now appears for messages with attached events.

Test Plan: Tested manually. Will add unit tests

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1797
2015-07-28 18:21:30 -07:00
EthanBlackburn 37c904e875 Database version incremented for last_message_received_timestamp 2015-07-28 14:09:24 -07:00
EthanBlackburn d51b3edec7 Threads now sorted by receivedrecetndate
Summary: Threads are now sorted using the thread's receivedrecentdate instead of recentdate

Test Plan: Tested Manually

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: mg

Differential Revision: https://phab.nylas.com/D1812
2015-07-28 14:03:55 -07:00
Ben Gotow 34b35a27da fix(unread-count): Add specs, fix logic in UnreadCountStore
Summary: Fixes T2376

Test Plan: Run 5 new specs

Reviewers: evan

Reviewed By: evan

Maniphest Tasks: T2376

Differential Revision: https://phab.nylas.com/D1805
2015-07-28 09:25:40 -07:00
Ben Gotow a85a65d3ff fix(spelling): Uprading => Upgrading 2015-07-28 00:36:41 -07:00
Ben Gotow 16cc24b0a7 fix(window-manager): Stop bindng window state to config when quitting 2015-07-24 19:25:49 -07:00
Ben Gotow b96869ed0c fix(window-showing): Continue running DOM timers in the main window even when it is not visible
This is a small fix that prevents the window from having to update when you re-show it.
2015-07-24 19:25:49 -07:00
Ben Gotow 571d9e9c2d fix(popover): Critical binding fix for popover 2015-07-24 17:02:27 -07:00
Evan Morikawa e8f002ac5d refactor(cruft): remove old Atom docs and other cruft
Summary:
Getting rid of things that I'm pretty sure we don't need. Lmk if you see
anything to the otherwise.

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1799
2015-07-24 14:27:21 -07:00
Evan Morikawa d3146b3a91 fix(composer): fix tabbing in composer 2015-07-24 14:21:54 -07:00
Ben Gotow b6dc7f0c9b feat(hotloading): CJSX hotloading when running in dev mode
Summary:
# Conflicts:
#	static/components/tokenizing-text-field.less

Wat no

Test Plan: Tested with ci build

Reviewers: evan

Reviewed By: evan

Maniphest Tasks: T1216

Differential Revision: https://phab.nylas.com/D1804
2015-07-24 14:10:48 -07:00
Evan Morikawa a2ecd2d0b0 fix(objects): fix UpdateNylasObjectsTask 2015-07-23 19:58:15 -07:00
Evan Morikawa 9eb36f5813 fix(popover): don't let popover overflow
Summary:
The popover class now will adjust itself until it fits within the window
frame. You don't see the intermediate state in the double render.

Test Plan: edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1795
2015-07-23 19:42:16 -07:00
Ben Gotow 60ccd86de1 fix(message): Show folder in expanded headers 2015-07-23 15:18:08 -07:00
Ben Gotow 1c5f9b74e9 fix(multiselect-bar): Do not render components inside action bar when it's hidden 2015-07-23 14:12:14 -07:00
Evan Morikawa a18fc0b84e fix(message-store): fix scoping issue in message store 2015-07-23 12:42:42 -07:00
Evan Morikawa 98ad2e6ebc fix(styles): fix button padding and styles 2015-07-23 12:22:27 -07:00
Evan Morikawa 348d60ea0c feat(picker): new folder and label picker
Summary:
The new, styled folder and label picker!

Some highlights:
- Folder picker has custom icons and a divider
- Label picker has checkboxes with off, checked, and intermediate state
- Extracted LabelColorizer out of mail-label
- Search will bold the results it found
- Fixes to Tooltip to prevent it displaying at invalid moments
- Keyboard UX improvements to Menu

Test Plan: coming soon

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1790
2015-07-23 11:47:46 -07:00
Ben Gotow b74d4fb1d6 Fix specs 2015-07-23 11:32:13 -07:00
Ben Gotow b412c580fc fix(workspace): Support for hidden locations / columns
Summary:
- New control will likely be shortlived - SDW mocking up replacement for when settings UI lands
- New action for toggling location hidden
- New rule for mail labels: can't remove "Sent"

Test Plan: Run tests - none new atm

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1782
2015-07-23 11:18:42 -07:00
Ben Gotow a559e3f89f feat(drag-threads): Move threads to folders/labels from thread list
Summary:
Drag threads to the folders / labels in the sidebar
WIP

Drag and drop is styled!

Test Plan: Tests WIP

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1785
2015-07-23 11:10:51 -07:00
Ben Gotow 4be05ff754 feat(tracking-pixels): New MessageStore extension cuts out tracking pixels you've *sent* so you don't trigger them
Summary:
- Remove thread_participants prop, we don't use them anywhere and the underscore-case is ugly.

- Move autolinker into extension, update autolinker to 0.18.1 for phone number support

- document message.coffee, add isFromMe()

- Add tracking pixel extension that removes pixels from mail you *send*. Maybe more features later.

Test Plan: Run 1 new test! (woo...)

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1787
2015-07-23 10:57:13 -07:00
Ben Gotow 84db1ee5f3 fix(contacts): No longer allow autocompletion to contacts without emails 2015-07-22 15:53:46 -07:00
Ben Gotow 2f6092d342 feat(draft-syncback): Sync drafts with Gmail (API does not support Exchange syncback)
Summary:
Sync drafts not files

WIP

Test Plan: Run syncback task specs

Reviewers: evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D1772
2015-07-22 11:18:23 -07:00
Ben Gotow 8874874c27 fix(nylas-api): Fix broken promise logic in NylasAPI success/error blocks
- Restores file uploading / canceling behavior
2015-07-21 18:15:45 -07:00
Evan Morikawa 45e27d7ded feat(labels): add a new label/folder picker
Summary:
This is the initial diff for the label picker UI. This is all of the
functionality and none of the CSS.

Test Plan: todo

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: sdw

Differential Revision: https://phab.nylas.com/D1761
2015-07-21 14:20:15 -07:00
Ben Gotow ffcb609194 fix(SDW): Styling of various controls and buttons. See description
- Message reply dropdown uses new images. Fixes T2355
- New hover actions which are darker. Fixes T2358
- New reply icon in the message footer. Fixes T2359
- Toolbar buttons are the correct height. Fixes T2360
- Thread list selection state changes mail label style
- Removed dead assets
2015-07-21 13:53:06 -07:00
Evan Morikawa a84722d38d fix(salesforce): better message syncing
Summary:
Fixes: T2196

While new incoming messages were syncing properly, a new message you sent
was not getting synced.

Since we re-fetch all of the `Messages` immediately after a send, we had
to be sure that the `sendDraftSuccess` Action fired after the new Message
had been persisted to the DB. Unfortunately, `_handleModelResponse` was
returning before the persist happened. This makes `_handleModelResponse`,
and by extension `NylasAPI::makeRequest`, resolve only after the new
models have been persisted to the DB.

We also were just dumping all of the HTML into the synced SalesforceObject
thread, making it entirely unreadable.

We now grab the `innerText` instead, which works great for basic
conversations. It usually includes the `On {date} {person} wrote:`
information, except for the first message, which we manually include.

The next version will likely create individual tasks for each individual
message, however, doing this properly will require a much more complex
Message <-> SFObject syncing task, as well as tying into the QuotedText
enging so we only sync the correct pieces. We'll also likely need a more
sophisticated plain text interpreter other then `innerText`. I wish we
could get access to the raw TEXT MIME part…

Test Plan: manual

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: gleb

Differential Revision: https://phab.nylas.com/D1766
2015-07-21 12:33:40 -07:00