Commit graph

1344 commits

Author SHA1 Message Date
Ben Gotow
5e49962cfb fix(metadata): Add missing joinOnField declaration, assertion 2016-04-12 12:03:41 -07:00
Ben Gotow
6d01120558 fix(account-store): Allow updateAccount in all windows 2016-04-12 11:48:16 -07:00
Jackie Luo
90366d38ae lint(utils): Fix linter issue 2016-04-12 10:43:13 -07:00
Jackie Luo
2a431fcec7 fix(composer-emoji): Switch to characters to PNGs (#1898)
* Add PNGs and JSON file

* Add Apple and Twitter emoji

* Fix linter issues and tests

* Get correct path from EmojiStore

* Add emoji regex and update extensions

* Remove the scary regex
2016-04-12 10:27:24 -07:00
Ben Gotow
9a2af44b5f perf(db): Use same subselect for "related emails" queries 2016-04-12 09:50:08 -07:00
Evan Morikawa
c5f4c7305d feat(scheduler): add an event preview when sending a meeting request
Summary: add event preview

Test Plan: manual

Reviewers: bengotow, juan

Differential Revision: https://phab.nylas.com/D2874
2016-04-11 22:45:36 -04:00
Ben Gotow
f1261cc000 rm(log): Fix bad log statement 2016-04-11 18:59:09 -07:00
Ben Gotow
8f86968ddd fix(scheduling): Enable by default in new installations 2016-04-11 18:07:37 -07:00
Ben Gotow
2eab0e3a75 fix(timestamps): Don't crash on null times #1929 2016-04-11 16:17:58 -07:00
Evan Morikawa
ceee33eb10 fix(scheduler): fix jumping calendar and add popover
fix(scheduler): fix jumping calendar and add popover

Summary: feat(scheduler): improved calendar picker

Test Plan: manual

Reviewers: bengotow, juan

Differential Revision: https://phab.nylas.com/D2873
2016-04-11 18:23:06 -04:00
Ben Gotow
db90db3131 fix(schedule): Use draft session to udpate metadata, always save in syncback 2016-04-11 14:32:54 -07:00
Ben Gotow
f906b0bc12 fix(db): Don't blow up over table SCANs with covering indexes 2016-04-11 13:51:58 -07:00
Ben Gotow
5220b471e3 fix(db): Counts no longer require Thread table join 2016-04-11 13:51:31 -07:00
Ben Gotow
07861f64be perf(db): Use subselect to improve thread list query perf (53%!)
Summary:
- Use a sub-select query with much better performance to display the thread list
- Perform analyze on tables after launch

The new query is:

```
SELECT `Thread`.`data` FROM `Thread` WHERE `Thread`.`id` IN (SELECT `id` FROM `ThreadCategory` AS `M26` WHERE `M26`.`value` IN ('9m9ks71k06n5rmx82kgues09p','9s9k25q6j1krjgpkovbcjm7d','13b7ufruoymvih07ki0uahlto','dtmhlzz6phr47zp512knhjgf8','16dvjb84bszfh15kgfrjj37i3','aclwmgncdqjfibp51bvgbeik','17qad7jhbp6tozog3klm5zagt','4x4bkbawiq825u4eu3aus8tll','7axr9f5f1lzpwm2rw2ghkirhq','dsnn660af0pmou2gg3nstga8a','361qr5rva1ieby2r0ec3sn0bm','10fyvba7pjyjgeyr5i65i1zri') AND `M26`.`in_all_mail` = 1  ORDER BY `M26`.`last_message_received_timestamp` DESC LIMIT 200 OFFSET 0) ORDER BY `Thread`.`last_message_received_timestamp` DESC;
`
0|0|0|SEARCH TABLE Thread USING INDEX Thread_id (id=?)
0|0|0|EXECUTE LIST SUBQUERY 1
1|0|0|SCAN TABLE Thread-Category AS M26 USING COVERING INDEX ThreadFancyIndex
1|0|0|EXECUTE LIST SUBQUERY 2
0|0|0|USE TEMP B-TREE FOR (only on 200 result items)
```

Which is twice as performant as:
```
SELECT `Thread`.`data` FROM `Thread` INNER JOIN `ThreadCategory` AS `M26` ON `M26`.`id` = `Thread`.`id` WHERE `M26`.`value` IN ('9m9ks71k06n5rmx82kgues09p','9s9k25q6j1krjgpkovbcjm7d','13b7ufruoymvih07ki0uahlto','dtmhlzz6phr47zp512knhjgf8','16dvjb84bszfh15kgfrjj37i3','aclwmgncdqjfibp51bvgbeik','17qad7jhbp6tozog3klm5zagt','4x4bkbawiq825u4eu3aus8tll','7axr9f5f1lzpwm2rw2ghkirhq','361qr5rva1ieby2r0ec3sn0bm','10fyvba7pjyjgeyr5i65i1zri') AND `M26`.`in_all_mail` = 1  ORDER BY `M26`.`last_message_received_timestamp` DESC LIMIT 200 OFFSET 0;

0|0|1|SCAN TABLE Thread-Category AS M26 USING COVERING INDEX ThreadFancyIndex
0|0|0|EXECUTE LIST SUBQUERY 1
0|1|0|SEARCH TABLE Thread USING INDEX Thread_id (id=?)
```

Test Plan: Broken!

Reviewers: evan, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D2869
2016-04-11 13:29:05 -07:00
Juan Tejada
a02b2b62fd fix(thread-list): Prevent empty state from showing when loading list
- EmptyState should only be displayed when the thread-list is actually
empty, not while it is being loaded
- Update ObservableListDataSource to have a state of loaded only when
the requested range is > 0, i.e. when we are actually requesting threads
2016-04-11 13:15:59 -07:00
Juan Tejada
7fd18f23c2 fix(perspective): Fix specs for FocusedPerspectiveStore 2016-04-11 07:59:40 -07:00
Ben Gotow
99bd3c1e69 fix(perspective): Just wait for first CategoryStore trigger to load perspective
The FocusedPerspectiveStore wants to restore a saved current perspective from disk. It needs to wait for the categories to be ready, but it doesn't necessarily need to wait for them to be synced, because it's unlikely unsynced categories are in the saved perspective and it just falls back to unified inbox.

I think there was some dead code in `_onCategoryStoreChanged` that initialized the perspective also, so I merged the two
2016-04-11 00:43:02 -07:00
Juan Tejada
3716706833 feat(thread-search): Add spinner to indicate search in progress
Summary:
- This diff also restructures the search package in a few ways:
  - Rename package to `thread-search` instead of `search-bar`
  - Move SearchQuerySubscription and SearchMailboxPerspective inside
  package. This allows SearchQuerySubscription to have access to
  SearchActions in a clean way and keeps all of the search related code
  in 1 package
  - Remove SearchMailboxPerspetcive from mailbox-perspective.coffee
- Adds temporary spinner while we get a new design for it

Test Plan: - TODO

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2868
2016-04-10 16:20:26 -07:00
Evan Morikawa
8f7b99ee4f refactor(scheduler): move all event data into metadata
Summary: Moved events into metadata. Removed a lot of code

Test Plan: todo

Reviewers: juan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2866
2016-04-09 21:19:01 -04:00
Ben Gotow
d884eccb36 fix(specs): * 2016-04-08 16:03:21 -07:00
Juan Tejada
172ac4fc0a update(search): Add search usage reporting + other fixes
Summary:
- Converts SearchQuerySubscription to ES6 to fix method overriding for
  `removeCallback`
- Reports different usage metrics for search
- Removes unecessary data source listener iniside ThreadListStore:
  - This listener focused the first thread on the list, which is
  actually unwanted (#1461)
  - It prevented QuerySubscriptions from being disposed promptly because
  of the remaining listener. They qould only be disposed until the
  subscription triggered once, which is not actually desired behavior
  (e.g. for SearchQuerySubscription)

Test Plan: - Manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2864
2016-04-08 14:11:32 -07:00
Ben Gotow
227bc81736 fix(sync-errors): Improve display of sync errors and offline status
- Make the retry interval go 2 sec, 3.4s, 6 sec...
- Only show the connection status bar if the interval is > 5 seconds, in case the error was temporary.
- Do not show sync errors in the sidebar. The only available action is "Try Again", and we try again on our own. The error is frustrating and the user can't do anything about it anyway.
2016-04-08 13:52:26 -07:00
Drew Regitsky
3918f1a181 feat(auth): Provide reauth param to handle changed server endpoints
Summary:
Notify the backend when auth is a reauth of an existing account by
providing the `accountId`. This lets the backend differentiate between
a new auth (where a new account will be created if the server endpoints
don't match) and a re-auth (where the auth will fail on server endpoint
mismatch, prompting the user).

Test Plan: manual

Reviewers: juan, evan, bengotow

Reviewed By: bengotow

Subscribers: mg, spang, kav-ya

Differential Revision: https://phab.nylas.com/D2833
2016-04-08 12:00:03 -07:00
Juan Tejada
0e743a50f1 feat(search-streaming): Add support for new search streaming api
Summary:
- This diff includes code to connect to the new search stremaming API. It converts the old NylasLongConnection into ES6 without any of the cursor management and includes it as part of NylasAPI
- Removes current search error handling because of the new error semantics of the api. If no results are returned a message will be displayed to the user indicating that
- WIP TODO:
  - Replace old NylasLongConnection class with new one and add test coverage.
  I did not replace our  current streaming code with the new ES6 code yet because
  the old code doesn't have test coverage and I don't want to introduce any
  (subtle) regressions to a vital piece of the app.
  - Potentially replace with JSONStreaming library or new http library
  (e.g. fetch)

- Note that Streaming API is not in production yet and only works for Gmail and IMAP (no EAS)

Test Plan: -TODO, manual

Reviewers: bengotow, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2859
2016-04-08 11:47:12 -07:00
Juan Tejada
c412267457 fix(search): Escape single quotes correctly 2016-04-07 15:31:55 -07:00
Evan Morikawa
6a70584ffa feat(scheduler): better time picker
fix(scheduler): time picker fixed
2016-04-07 15:14:33 -07:00
Juan Tejada
8d8227a094 fix(search): Escape search query properly 2016-04-07 09:57:53 -07:00
Juan Tejada
317f9be93d feat(thread-search): Make thread search indexing smarter
Summary:
- When accounts change, make sure sync has completed, and only add or
remove threads from the index based on accounts that were added or
removed instead of rebuilding the entire index from scratch

- When thread is updated, make sure to only update the index for threads
that belong to accounts that are not currently in the sync process

- Add more logging and docs

Test Plan: TODO

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2852
2016-04-07 09:57:29 -07:00
Ben Gotow
b16b465fd9 lint(*): Fix linter errors from QA fixes 2016-04-06 16:15:46 -07:00
Ben Gotow
d3f2d65610 fix(fwd): Do not mention Bcc'd recipeints in forward headers #1873 2016-04-06 14:51:17 -07:00
Ben Gotow
a05daeb0f0 fix(autolinker): Add test cases, .ly, url hash chars 2016-04-06 14:17:10 -07:00
Evan Morikawa
f1a8b6929f fix(scheduler): can remove proposed times 2016-04-06 13:59:24 -07:00
Evan Morikawa
3fa0ce249f fix(scheduler): fix time bar scroll height 2016-04-06 13:59:24 -07:00
Evan Morikawa
f13e30feaa fix(calendar): today correctly jumps to this week 2016-04-06 13:59:24 -07:00
Evan Morikawa
dc5210275e fix(scheduler): fix top banner 2016-04-06 13:59:24 -07:00
Ben Gotow
3cd94e8957 fix(cc/bcc): Make targets bigger, wait longer before declaring focus left 2016-04-06 13:54:39 -07:00
Ben Gotow
7727c620d1 fix(composer): Do not steal focus when it is in other components
This is to fix a bug where changing the "from" address to an address with a different signature caused the composer to become focused, hiding the from field.
2016-04-06 13:54:39 -07:00
Evan Morikawa
f97aa855a4 fix(schedule): extracted to own SyncbackDraftEventsTask 2016-04-06 11:50:21 -07:00
Ben Gotow
7210e2f42d fix(mail-rules): Only process inbox, never skip threads
Summary:
- Disable processing button while already processing
- Only process mail in the inbox in bulk reprocess task
- Advance through mail using "after X" rather than "offset X", avoiding the issue where mail can be deleted as you're advancing.

Test Plan: Run existing tests

Reviewers: evan, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D2847
2016-04-05 19:16:58 -07:00
Evan Morikawa
bb318bf69c feat(scheduler): add new date & time picker
Summary: Adds a date and time picker to the new event creator

Test Plan: todo

Reviewers: bengotow, juan

Reviewed By: bengotow, juan

Differential Revision: https://phab.nylas.com/D2842
2016-04-05 18:42:19 -07:00
Ben Gotow
a3fe0f4d71 fix(db): Always refresh entire range after unknown changes
Summary: When changes can't be accurately applied to a result set, always refresh the entire range, not just the missing range. This ensures that additional changes being applied while our query is in flight can't cause the result set to include the same item twice.

Test Plan: Run tests

Reviewers: evan, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D2846
2016-04-05 18:32:38 -07:00
Juan Tejada
43093cda31 fix(drag): Pass correct drag coordinates from event
- Don't use magic event variable without declaring it
2016-04-05 17:59:48 -07:00
Ben Gotow
e5500b433b perf(*): Make AccountStore / ContactRankingStore less noisy 2016-04-05 16:15:47 -07:00
Juan Tejada
752fade731 fix(sync-status): Fix bug caught by specs 2016-04-05 14:53:37 -07:00
Juan Tejada
4c250640fe fix(react): Fix several warnings in missing imports 2016-04-05 14:53:37 -07:00
Juan Tejada
52486957bc fix(sync-status): Actually fix sync status logic
- Must take into account that some accounts have `labels` and others
have `folders`
2016-04-05 14:04:10 -07:00
Juan Tejada
9f4b9693ac fix(sync-status): Fix logic for checking sync status:
- Only check sync status keys that belong to actual models being synced
- Return false if state object is empty
2016-04-05 13:29:25 -07:00
Ben Gotow
110c8a8c50 fix(update): Initial autoupdate placeholder for linux 2016-04-05 12:27:33 -07:00
Ben Gotow
698af87912 fix(mail-rules): all "on" handlers need to be bound functions 2016-04-05 12:01:53 -07:00
Juan Tejada
820639ec50 fix(sync-status): Ignore keys that arent models when check sync status 2016-04-05 11:14:26 -07:00