* Added support for 24-hour time to the thread list view (Issue #682)
* Add 24-hour time support to the thread list scroll tooltip (Issue #682)
* Fix for 24-hour time in the thread list scroll tooltip (#682)
Correctly imports the DateUtils module
* Add support for 24-hour time to the draft threads list (Issue #682)
* Add 24-hour time to the message sidebar
* Fix for 24-hour time in the message view so the rollover tooltip is 24hour also (#682)
* Removed unused date functions from utils
fullTimeString and shortTimeString from src/flux/models/utils.coffee were not
compatible with 24-hour time. These functions were modified and moved to
DateUtils in src/date-utils.
* Fix for display of 24-hour time in the message view (Issue #682)
* Removed unused import of Utils in a couple of files
Prompted by Travis build errors.
* Updates to handling of date/time display
Incorporates changes suggested by @bengotow.
Re-enables support for the isDetailed property in message-timestamp (if this is set
to true, a medium length date/time string will be used for display).
Re-enables additional display varieties based on when the email was received. Note
that this is implemented slightly different to the orinal version - time is now given
as an absolute time rather than "... days ago" format.
TZ guessing moved to the global scope of date-utils for performance reasons.
* Minor de-linting
* Re-enable all tests by unfocusing the test suite
A previous commit (ad04775) added an fdescribe() to one of the tests in
draft-helpers-spec. This changes that to a regular describe() so that
all tests will be run when running ./N1 --test.
* Added tests for the new DateUtils functions
Added tests for getTimeFormat, mediumTimeString and fullTimeString.
Removed no longer relevant tests from message-timestamp-spec as _formattedDate
has been removed in favour of the functions in date-utils.
To test shortTimeString, we need to be able to set a fake current time which is
possible in jasmine 2.0+ but not in 1.3 which is currently in use.
As a possible bug, when running more than 10 tests the following warning is raised:
"(node:25025) Warning: Possible EventEmitter memory leak detected.
11 on-config-reloaded listeners added. Use emitter.setMaxListeners() to increase limit",
source: internal/process/warning.js (24)
* Minor de-linting
Summary:
When testing we thought that Deleting a folder turns it grey but keeps it in the folder list; trying again throws this error.
It turns out, that the folder was actually going to be deleted if left alone long enough, however, since it sat there grey for a while
we would attempt to delete it again which would throw an error. To get around this, we removed the isDeleted grey state and
unpersisted the folder right when delete is clicked then persisted the folder if there was an API error.
fix(folders): Add new and extend destroy category task specs
Test Plan: I tested locally, tweaked destroy category task specs and added minor new specs
Reviewers: bengotow, juan
Reviewed By: juan
Subscribers: bengotow, juan
Differential Revision: https://phab.nylas.com/D3131
- Completely remove nylas-long-connection.coffee file and consolidate all logic into
nylas-long-connection.es6 and worker-sync/delta-streaming-connection.es6:
- Separate it into DeltaStreamingConnection which is specific to the worker-sync
package for handling deltas
- NylasLongConnection is a "reusable" persistent connection to our API
which is also used by the search package
- This is a basically a fixed revision of https://phab.nylas.com/D2875,
see difff for more info
- Makes it so delta streaming does not retry so aggressively on 403s, which
happens whenever a user’s trial has expired
Summary:
Wanted a way to reset configuration settings. I added button in N1 general preferences to remove `.nylas` folder and reboot titled 'Reset Accounts and Settings' as well as one to exclusively remove `.nylas/edgehill.db` titled 'Reset Email Cache'.
Not sure about the wording of the button descriptions.
Test Plan: Tested with different file paths on my machine. Was going to write tests, but the two buttons just call previously tested functions onClick -- rimraf and fs.unlink. Testing might be excessive?
Reviewers: bengotow, juan
Reviewed By: juan
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3127
Summary:
Added animation and input with url of gmail auth for users where the broswer redirect doesnt work.
Still need to finish up some minor styling.
style(onboarding): add input with link for gmail auth if browser redirect doesnt work
Test Plan: testing on my local install
Reviewers: juan
Reviewed By: juan
Subscribers: sdw
Differential Revision: https://phab.nylas.com/D3119
Summary:
Adds a fun new UI for adding accounts to the sync engine. After creating your sync engine instance, all you have to do is auth your accounts on the command line and then enter the URL/port number in this flow. That pulls all of your accounts from the `/accounts` endpoint, mocks an identity token, and edits your `config.json` properly.
TODO: Update the docs in the repo and revert the PR with the temporary fix.
Test Plan: Tested locally.
Reviewers: bengotow, halla, juan
Reviewed By: halla, juan
Differential Revision: https://phab.nylas.com/D3114
Summary:
Extended default signatures to also be associated with aliases in the signature
preference page. Also fixed some styling with the signature dropdown button in its blurred
state on the popout composer.
fix(signatures): Fixed styling for signature compuser button on popout when blurred
test(signatures): Updated tests to support and cover extending signatures to alias
Test Plan: Modified existing tests to work with these changes
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3111
Summary: We used to parse the quoted text on each keystroke in the composer for a reply so that we could continue to determine what was quoted text. However, that resulted in dramatically slow typing for replies to complex HTML emails. Now, the quoted text isn't a part of the reply until `prepareDraftForSyncback`, after all of the extensions have run their transformations—we use a marker to determine whether quoted text should be appended or not. The quoted text control is now a one-way operation—you can't hide the quoted text after showing it (Gmail-style).
Test Plan: Tested locally (but didn't run unit tests because they won't run on my machine...)
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3106
Summary:
refactor(test): Fix file paths in message item body tests to be prepended with file://
Some inline images were not rendering as seen on (#621). The images were being correctly added to the
downloads folder, however, their path was being prepended with an unrelated base url. I hardcoded
file:// into the image paths so that they would always point to the local downloads folder.
Test Plan: Ran the specific tests for message item body and message item. Also checked in my email.
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3105
Summary: Some emails were having their body height set to 0 if their height was dependent upon the iframe height -- e.g. body.height equals 100% or inherit. Added a check to see if height computed to 0px and if so, set the height to auto.
Test Plan: Tested with emails on my computer
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3100
When APIRoot is using https, the port will forced to be 443 even when APIRoot
indicates another port. This is because of the line options.port = 443
overwriting the correct options.port extracted by url.parse. This is fixed by
removing the problematic line. The default port is still 443 if you look into
https.js. In case we want a different default port in the future, we can do
options.port = options.port || 443.
Summary:
Refactored signature preferences page to allow more signatures than the previous 1-1 mapping for signatures and accounts. Created a multi select dropdown of the accounts for which a certain signature is set as default for. Added a button into the draft header From field to toggle between saved signatures.
refactor(signatures): Add basic add/remove capabilities to static
refactor(signatures): Hooked up signature actions and signature store for basic functionality
fix(signatures): Cleaned up signature store and started on multiselectdropdown
fix(signatures): Add multi signature toggle select to multiselect dropdown
build(signatures): Built framework for multiselect dropdown
build(signatures): Toggle button functionality for dropdown
build(signatures): Build multi select from components and add debounce
refactor(signatures): Move signature actions and signature store into flux
fix(signatures): Styled composer signatures button/dropdown and fixed preferences checkmarks
build(signatures): Finish main functionality, about to refactor composer signature button into injected component
fix(signatures): Changed position styles
fix(signatures): Fixed background color for dropdown button when blurred
build(signatures): Began to write tests for signatures store, preferences and dropdown
Test Plan: Wrote tests for preferences signatures, signature store, signature composer dropdown and refactored tests for signature composer extension. For signature composer extension I removed applyTransformsToDraft and unapplyTransformsToDraft and tested by sending emails with signatures to different providers to make sure the <signature> tag caused problems.
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3073
Fixes#1393
The objects returned by `new Notification()` have a `.close()` method.
So we can just keep a list of notifications that have been sent, and
close them when that message has been read.
Conflicts:
internal_packages/unread-notifications/lib/main.es6
* Remove double negative from test label
It always takes me a second to read a double negative, and be sure I
understood correctly. It's also particularly troublesome for non-native
English speakers.
* Change pending unread notification stack to be a queue
Consider the case where a user launches N1, and has 3 unreads since
their last launch. Additionally, after N1 has launched, they begin
receiving a new mail every 2 seconds.
Current behavior would be a notification for 1 of the 3 unread emails,
then every 2 seconds a notification for the most recently received mail.
They would only finally receive notifications for the other 2 original
messages once they stopped getting new mail.
* Fix private key email-adder, add "no private key" error
The decrypt UI is seriously confusing some people. This commit
adds an error message that should at least stop them from trying
to decrypt a message without a private key to speak of. Also,
there was a dumb hardcoded true in validAddress.
* Adds incorrect passphrase notification; enables carriage return for popover
The passphrase popover was woefully inadequate. It didn't tell users
when they had the wrong password - it just closed without saying anything -
and you couldn't even use carriage return to submit the password.
This commit fixes those mistakes by buffing out passphrase-popover.cjsx.
* Adds private key popover to decrypt button
The decrypt UI was confusing and didn't provide the user with
an option to get a key imported from the message view. This
mondo commit adds an entirely new popover so that the user
never again will be forced to go to the preferences page.
* Adds more forgiving encrypted block parsing
* Overhauls decryption error handling
The decrypt UI didn't clearly communicate error messages from the
failure in PGPKeyStore.decrypt up to the user. This commit adds
nice error surfacing as well as some pretty colors.
* Fix encrypt modal key miscount error via getKeyContents coercion
On Linux and Windows, fs.watch double-triggers on some actions in
the key folder, for reasons that aren't super clear. This was causing
issues where the encrypt modal would report not having a key loaded
even though the key was totally loaded and saved. This commit sort
of kludgily forces the modal to run getKeyContents for every key
it has saved right before it returns them all. This would probably
be better fixed with a refactor the the PGP Keystore.
* remember to close popover, d'oh
* patch key picker modal styling for Linux and Windows
* response to review
Summary:
when renaming nested labels, maintain nested path
fixes#2402
Test Plan: created nested labels and successfully tested in dev
Reviewers: juan
Reviewed By: juan
Subscribers: evan
Differential Revision: https://phab.nylas.com/D3028
Summary: Specs were failing on Linux, this diff fixes them.
Test Plan: Unit tests
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3029
* update icons
* style commit
* Debugs export function
The key Export function used to not successfully show items in
their directories and also depend on the most recent attachment
download location. This commit adds a new savedState attribute
just for Keybase keys and also handles the case where that value
is null.
* Forces delete to populate
fs.watch() was acting up and not triggering populates on deletes.
Now deleteKey() just triggers a populate.
* Re-enables decryption of attachments from Enigmail
Decryption of attachments was disabled in the Great Password Popover
Refactor of Early June 2016. This commit adds that feature back
(and makes some changes to getKeyContents to facilitate that
change).
- We have to manually check if we are inserting a thread to the index
that already exists because the virtual table does not support unique
indexes
- Add versioning to the index to be able to rebuild it for the next
update
commit efe58092494c8870072bdf45991c122624bb93e6
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue Jun 7 13:06:25 2016 -0700
patching specs
commit 15a346b93efa5a21327f6bd7c14ef60ddc0f79bb
Author: Ben Gotow <bengotow@gmail.com>
Date: Mon Jun 6 17:49:20 2016 -0700
A few small fixes
commit d4cc62a90d2d4f101b71bc57b5521353d2175219
Merge: 80018c0 17d9c3d
Author: Ben Gotow <bengotow@gmail.com>
Date: Mon Jun 6 17:32:00 2016 -0700
Merge branch 'master' into wip/keybase
Conflicts:
build/Gruntfile.coffee
internal_packages/onboarding/lib/page-authenticate.jsx
commit 80018c045527dec331118426ce67d82c44926334
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri Jun 3 18:12:39 2016 -0700
Re-styles decryption interface, temporarily removes file decryption
The decryption interface was ugly as hell. Now it's aligned with
the "Message Encrypted" notice and also the ugly text input is
gone - replaced by a much nicer-looking popover. In the course of
this refactor, file decryption was temporarily deactivated, but
will return soon.
commit ed1e6232803e2c6b8930f5ed2bd6ccde56542b3b
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri Jun 3 15:39:02 2016 -0700
Adds more information to key-adder UI
User testing indicated that the key-adder UI didn't provide
enough feedback about incorrect inputs and the slow load time
of key generation. This commit adds a spinning wheel while loading
and a span describing which inputs are incorrect.
commit 4d7908635cd606a3ebb2607537127dd1c5740a35
Author: logandavis <logankeahidavis@gmail.com>
Date: Thu Jun 2 18:40:57 2016 -0700
Touches up search
Fixes a bug in the search debouncing that was sometimes
allowing users to modify search queries and not have the
new query searched. Added messaging to stop people from
trying to search keybase by email address.
commit 140ae6679758d8ed54d1b6b7bd5c837f84132363
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed Jun 1 17:35:39 2016 -0700
Adds import from file and unifies paste in key-adder.cjsx
User review feedback indicated that key import was a big pain
point - pasting keys was a pain in the butt, private keys
could be saved as public keys, etc. This commit is the functional
overhaul (and refactor) for the key-adder on the preferences
page. It adds an Import from File function and merges
Paste Private and Paste Public into just Paste, which autodetects.
commit 297f9ed482f4e83c52e40e479a31ba1bffad3f7d
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 21:11:01 2016 -0700
fix(es6): Converstion broke file uploads by adding body: {}
commit 7815e90c49c70339cd6d26d48e818d4f5f962b7f
Merge: af54f01 0af27ee
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed Jun 1 14:49:14 2016 -0700
Merge branch 'wip/keybase' of github.com:nylas/N1 into wip/keybase
commit af54f0165b95447ffa04c1e324e02d892b20d047
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed Jun 1 14:47:03 2016 -0700
Bugfixes: clientID not found (from rebase) and modal on new email
User testing revealed two pretty noxious bugs, one when you email
someone who's not saved as a contact and one caused by an update
to mail merge requiring inputs to Participant-Text-Field that
n1-keybase wasn't provided. This fix patches modal-key-recommender
to use emails as a fallback to contacts and sets a reasonable
default for the input to Participant-Text-Field.
commit 0af27ee10666f35f248a4191fe937cde920d6baf
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 19:10:11 2016 -0700
fix(specs): Empty parameter list
commit 87407249c2bfa7737a4609ac89b46c3b5a074f76
Merge: e4c050b 9892473
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 18:08:46 2016 -0700
Merge branch 'master' into wip/keybase
commit e4c050b599fbc83b6249634297483a5683fe3c56
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 18:08:42 2016 -0700
fix
commit 6c7857890df9d277f786b87ab996feeec4089c3b
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 18:05:35 2016 -0700
fix(linter): Minor issue
commit 36197effd6c8ca3648a5010dac874c9a990fb1b9
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 18:02:26 2016 -0700
fix(lint)
commit 73dd4850bf675f983ecfcc5ef65e91b9aa118e16
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 17:52:18 2016 -0700
fix(lint): Don't lint node_modules of packages
commit 15c9d42f2d896f22092465e78cb340d07e0086ac
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 17:36:24 2016 -0700
patch(auth): Remove unused import
commit 8756b2b5314fd0366caf8b2e12a3bc5e527bc593
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 31 17:33:30 2016 -0700
patch(auth): Temporarily remove auth flow
commit 135395e4afdfcc8ba57667e60fa73ef55e126c2f
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 31 17:25:08 2016 -0700
linting fix
commit 1049449f211111e704b3e543d2748339bf9cc6fd
Merge: e6a8f9e e1275eb
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 31 15:50:00 2016 -0700
merge commit
commit e6a8f9ebadcc3d1b1444c8676d15b730a0d7a5c0
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 31 15:19:27 2016 -0700
move styling, update readme
commit d388eb737ae9febc197bf0fe22d505a28c669639
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed May 25 16:15:31 2016 -0700
Add Export Private Key button to preferences
commit f49062639a8f4a67a576b90a02f4b0f06dd492d0
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed May 25 12:40:23 2016 -0700
Add Export Public Key button to preferences
commit 847221b6a2c9b1a1e8b817708ed9032803de9261
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 15:26:37 2016 -0700
update readme
commit 1f3f14bf9c69bfea7d7d1ac79c39fe0fe6befd37
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 15:23:26 2016 -0700
Beautify Add Email button, catch naggling bugs
The old add email button on the preferences page, which
was not playing nice with the styling of KeybaseSearch, has
been replaced by the drop-in EmailPopover element. Also, two bugs
that were causing the console to flip out on normal, unencrypted
emails were caught and fixed - the Decrypt Button now returns
false instead of null, and attachments without filenames are
allowed.
commit a7cb363e357ff996b92946e9685416b98133de0b
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 14:54:00 2016 -0700
Debug and style the encryption popover modal
The encryption popover was ugly as sin and also lacking in
some functionality - it unnecessarily showed the email list,
it contained no reference to the Key Management page, it
didn't display any links to the keybase profile in question...
now it is a pretty and functional popover.
commit b4e3f5421558d4d128ffc66125657fc8b1abf1f1
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 18:56:08 2016 -0700
Unborks Import Key popover, obscures password fields
The Import Key popover on the preferences page was rendering off
the screen because it was always pointing at the last button
created rather than the button clicked. Now that's fixed.
commit 20ab9f825d65f40451397c8a1df484bb7e63c593
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 17:17:44 2016 -0700
Fixes identity filename/address management, dedupes search, encodes +
Bunch of minor bugfixes here. The identity.path refactor broke
PGPKeyStore.addAddressToKey and removeAddressFromKey, which this commit
fixes. + characters were being incorrectly encoded in messages as +
which was breaking message decryption - that's now fixed in message
preprocessing. Finally, basic Keybase search result deduplication
is now in place.
commit 8a2a5e6dc3c84ade420b16e36d2954cea661d1f1
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 14:13:17 2016 -0700
Adds private key management to preferences page; beautifies
Previously, the KeyManager element on the Preferences page only
exposed public keys, and there was no way to see, edit, or delete
private keys. Now you can do all of those things. This commit
also fixes some render-timing issues in PGPKeyStore._populate
that were causing nonexistent keys to appear (one on key generation,
one on deletion of the final key) and improves the styling of
the Preferences page.
commit 3c39431dd6ad3a8c19770c6ddd46d508ee92d4bb
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 13 15:22:40 2016 -0700
burns the dead code out of preferences-keybase
commit eb7b924d5e00946ebb3e7174f54f2c1dde1ff616
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 13 14:58:51 2016 -0700
Fix key generation and saving from the preferences page
An earlier refactor away from key objects and towards identity
objects borked the old key saving code. This commit refactors
the key-saving code so that keys can be manually added from
the preferences page again, and also makes said code much
clearer.
commit e1f78d0080505102bf421c8c3638fee527d84481
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 17:41:24 2016 -0700
add README of todos
commit c44d7995fc3cc097fb8f98689dd18488920488cf
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 17:41:12 2016 -0700
heavy style pass, misc bugfixes, add assets
commit 47208ca2d947ac4b04c1fec14b433f7c6105fe1d
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 14:03:06 2016 -0700
Decrypting files first pass, problem with unlocking keys
commit fc2a56574c1eb0a7098280f3e7a2ca5d6697340c
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 4 17:52:32 2016 -0700
Cause message to encrypt on key picker popover close
commit 545392dee9db2754c6b729bd9549c071e1568ddd
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 4 12:04:08 2016 -0700
light design pass on the modal (now a popover)
commit 2726aab32dd74a68936a7d80d6e49b879f182ee3
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon May 2 15:47:45 2016 -0700
Key picker modal functional for multiple recipients, still needs lots of cleanup
commit 050114acf36b8654de80726352812e945ac88968
Author: Dakota Nelson <dakota@nylas.com>
Date: Fri Apr 29 14:52:33 2016 -0700
Key picker modal functional for single recipient
commit 865c7c8894b30a55e4c6027dd6f03fea5d0bb330
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 28 17:31:08 2016 -0700
modal now allows selection of keybase user
commit 728c995314b3238bdb3222c7d12353ab2e35a65a
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 28 10:46:47 2016 -0700
consolidate key cache into one object, fix all tests
commit 4bdd49ebd60beadf72b7aa099cfded09861768af
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 27 11:49:54 2016 -0700
checkpoint commit for key selection modal in composer
commit 7d33d832f6587814f8da142e14f9a7f8256114b9
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 17:46:01 2016 -0700
Remove infinite loop of doom, match keys properly
commit 7a4c1d60c1f1455e70a190710b59970ab2ed3b2a
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 14:31:41 2016 -0700
Re-add some of Logan's changes lost in the repo migration
commit 6c1e31601e499f69c8df5b9f1a5244480ec67da1
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 13:52:55 2016 -0700
slightly improve style on the decryption interface
commit 78f115f59ce09f57621776be4287e1e3a9d047b4
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 13:10:27 2016 -0700
update keybase profile type translation to include proofs
commit 664c61fdd5e03d9ba4afa40d14673ad7733b1e30
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 11:54:35 2016 -0700
Replace undocumented 'key' objects with explicit 'identity' objects
commit 0824cc0a522e9d9d8045d7a87ef3b7ec8381090e
Author: Dakota Nelson <dakota@nylas.com>
Date: Fri Apr 22 13:33:18 2016 -0700
Remove unused code
commit f0fd315cf7daf64f63d933508a6799ae4b5b4f18
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 21 17:24:54 2016 -0700
Further refactor keybase plugin
commit 086e86f289213789f5796b5b1febee709986b89a
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 21 15:53:54 2016 -0700
Refactor, and a useless commit msg
commit 1fcda3875424a3ba4ba54f25644b43690b153324
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 16:16:26 2016 -0700
Fix linter errors (reported via cd build; grunt lint)
commit fcc937e6b50e43932478437ecf6dabb2f96fa15c
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 16:08:42 2016 -0700
Keybase API was 500'ing - move API adapter to standard (err, data) callback format and make it only call the callback once when error is hit (return after erroring)
commit fd0b4220af13cc80b4c88f9e2e63976a54ac50d4
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 15:56:27 2016 -0700
Fix state were user has no pub keys
commit 13886101fcf63e4e497526c2e039cbb791670c06
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 20 15:25:30 2016 -0700
add Logan's changes from the other repo
commit 6e9103b4188414ddd6e01db2c4c50c68ad54caca
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 20 15:22:34 2016 -0700
minor styling change to improve keybase popover
commit fd0749a7c1c9202b94dc5a47bad26d8960c17099
Author: Dakota Nelson <dakota.w.nelson@gmail.com>
Date: Wed Apr 20 12:30:40 2016 -0700
feat(keybase): Initial commit from n1-keybase repo
commit e1275eb9ea548f76c06eb605b77a62d314f3d10f
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 31 15:19:27 2016 -0700
move styling, update readme
commit 7f64713cc5d8cfdc59eca3c007cf673e5e2b6dea
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed May 25 16:15:31 2016 -0700
Add Export Private Key button to preferences
commit 9d4e2552388f94fb7113ab80906519dce4d7350f
Author: logandavis <logankeahidavis@gmail.com>
Date: Wed May 25 12:40:23 2016 -0700
Add Export Public Key button to preferences
commit 166585dba9ece8d5dd529418b934947985ace5a3
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 15:26:37 2016 -0700
update readme
commit f875c4146e98152cf4d050fc5af3c322c2d5fdae
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 15:23:26 2016 -0700
Beautify Add Email button, catch naggling bugs
The old add email button on the preferences page, which
was not playing nice with the styling of KeybaseSearch, has
been replaced by the drop-in EmailPopover element. Also, two bugs
that were causing the console to flip out on normal, unencrypted
emails were caught and fixed - the Decrypt Button now returns
false instead of null, and attachments without filenames are
allowed.
commit 48713d78381fb7320ce265b84c95f8b1497008f7
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 20 14:54:00 2016 -0700
Debug and style the encryption popover modal
The encryption popover was ugly as sin and also lacking in
some functionality - it unnecessarily showed the email list,
it contained no reference to the Key Management page, it
didn't display any links to the keybase profile in question...
now it is a pretty and functional popover.
commit a607f97f8082a14a29ebd5c2d8b397872ef5456a
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 18:56:08 2016 -0700
Unborks Import Key popover, obscures password fields
The Import Key popover on the preferences page was rendering off
the screen because it was always pointing at the last button
created rather than the button clicked. Now that's fixed.
commit 2afd41894aa297dcd6aec0b785cadbb533377f80
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 17:17:44 2016 -0700
Fixes identity filename/address management, dedupes search, encodes +
Bunch of minor bugfixes here. The identity.path refactor broke
PGPKeyStore.addAddressToKey and removeAddressFromKey, which this commit
fixes. + characters were being incorrectly encoded in messages as +
which was breaking message decryption - that's now fixed in message
preprocessing. Finally, basic Keybase search result deduplication
is now in place.
commit 4824556543dce31b14be81ebe471f8febb55e00c
Author: logandavis <logankeahidavis@gmail.com>
Date: Tue May 17 14:13:17 2016 -0700
Adds private key management to preferences page; beautifies
Previously, the KeyManager element on the Preferences page only
exposed public keys, and there was no way to see, edit, or delete
private keys. Now you can do all of those things. This commit
also fixes some render-timing issues in PGPKeyStore._populate
that were causing nonexistent keys to appear (one on key generation,
one on deletion of the final key) and improves the styling of
the Preferences page.
commit 47c05fc485c80b297b6027f9bdabb5f921be77b3
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 13 15:22:40 2016 -0700
burns the dead code out of preferences-keybase
commit 6fdf34e5c4188994844052d95d927cab1ed182ea
Author: logandavis <logankeahidavis@gmail.com>
Date: Fri May 13 14:58:51 2016 -0700
Fix key generation and saving from the preferences page
An earlier refactor away from key objects and towards identity
objects borked the old key saving code. This commit refactors
the key-saving code so that keys can be manually added from
the preferences page again, and also makes said code much
clearer.
commit a1b4b4fdb4b35a844ca490d3e9029dbbf4d7bf24
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 17:41:24 2016 -0700
add README of todos
commit 6747a0a447476ca6af829886ec304d57bc5dd0ee
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 17:41:12 2016 -0700
heavy style pass, misc bugfixes, add assets
commit 8544e4b84341f0bc49a1765c057cbf443c220448
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 11 14:03:06 2016 -0700
Decrypting files first pass, problem with unlocking keys
commit 428dc6739fb29f833c53e957e7a998abf25460ac
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 4 17:52:32 2016 -0700
Cause message to encrypt on key picker popover close
commit 9d8ef053beca3ef6bbc910de272f1b98033599bf
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed May 4 12:04:08 2016 -0700
light design pass on the modal (now a popover)
commit b4a0ad2fa2ac33dbf3333e4beb9ac0df04aa107d
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon May 2 15:47:45 2016 -0700
Key picker modal functional for multiple recipients, still needs lots of cleanup
commit 6bf96d973c7e19de103695f3d6e3346c8db2dab3
Author: Dakota Nelson <dakota@nylas.com>
Date: Fri Apr 29 14:52:33 2016 -0700
Key picker modal functional for single recipient
commit f5f0e6aea8c16aefd3cdcbe19664bed708857693
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 28 17:31:08 2016 -0700
modal now allows selection of keybase user
commit 83f7ad54bcab7c24da033d8fe60a602b27b79ded
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 28 10:46:47 2016 -0700
consolidate key cache into one object, fix all tests
commit f8ec4576dee108584e946a7e4c6b9f17885921de
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 27 11:49:54 2016 -0700
checkpoint commit for key selection modal in composer
commit c4dd851402162bcaa7e3b8cebf911d6a57fdfdbc
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 17:46:01 2016 -0700
Remove infinite loop of doom, match keys properly
commit 537d2b423b9c4210c97bda0bf00cbbd1a4ebc80f
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 14:31:41 2016 -0700
Re-add some of Logan's changes lost in the repo migration
commit 91d86ad6b69edee59de4938c24143e186ad5523a
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 13:52:55 2016 -0700
slightly improve style on the decryption interface
commit 321ea22c01a6f346325870049a0664155b7ee71f
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 13:10:27 2016 -0700
update keybase profile type translation to include proofs
commit b8821490432e582a53e7416b49476f90ab59f230
Author: Dakota Nelson <dakota@nylas.com>
Date: Mon Apr 25 11:54:35 2016 -0700
Replace undocumented 'key' objects with explicit 'identity' objects
commit 0999127bcd9c3cd75e17a8a4e6d37c5b53bc22ef
Author: Dakota Nelson <dakota@nylas.com>
Date: Fri Apr 22 13:33:18 2016 -0700
Remove unused code
commit 3ddfc4e6946b3ed3e051c561cdda7499d326058f
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 21 17:24:54 2016 -0700
Further refactor keybase plugin
commit 1b5a9de2c9b2084a214619ce7c551ed6e9283a96
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 21 15:53:54 2016 -0700
Refactor, and a useless commit msg
commit 999dd82e225b2d8209ee4f7be3cc0ab43c8e53b8
Author: Dakota Nelson <dakota@nylas.com>
Date: Thu Apr 21 11:43:02 2016 -0700
Modify participants func to optionally allow from and bcc
commit 9cdf258f5df9fd34ac94bf9822fdd7256af1bb9a
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 16:16:26 2016 -0700
Fix linter errors (reported via cd build; grunt lint)
commit c14fc59b6f236191b759bda6561c5f343401e8ab
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 16:08:42 2016 -0700
Keybase API was 500'ing - move API adapter to standard (err, data) callback format and make it only call the callback once when error is hit (return after erroring)
commit f0225603abb56b14e540f8419cb212760cf0883d
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed Apr 20 15:56:27 2016 -0700
Fix state were user has no pub keys
commit 818881523c698b1bd368344e9ff29ae870f9aae2
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 20 15:25:30 2016 -0700
add Logan's changes from the other repo
commit 69f2003ff11be741b97bbb36a7bb4afd29ac7ecc
Author: Dakota Nelson <dakota@nylas.com>
Date: Wed Apr 20 15:22:34 2016 -0700
minor styling change to improve keybase popover
commit 4081ad7ef2b4375f5665904eb2d61992bab9cf4d
Author: Dakota Nelson <dakota.w.nelson@gmail.com>
Date: Wed Apr 20 12:30:40 2016 -0700
feat(keybase): Initial commit from n1-keybase repo
- When focusing a perspective:
- If sidebar is unified inbox then don't the sidebar layout
- If sidebar is for a single account, then update to the appropriate
single account
- Renames some variables
Summary:
- FocusedPerspectiveStore now holds the state of the accounts that are currently being displayed in the sidebar, i.e. unified inbox or not, which makes it globally accessible state. The SidebarStore just reads this state directly off of the FocusedPerspectiveStore to decide which sections and items to display in the sidebar.
- Updates `Actions.focusDefaultMailboxPerspectiveForAccounts` to take an optional array of `sidebarAccountIds` to set in the sidebar. The default behavior is to show the accounts of the perspective that will be focused. E.g. when selecting an account via the account switcher, it will just show the sidebar items for the single account that was selected, but when adding a new account, we are setting the sidebar accounts to all account although we are still focusing the perspective for a single account.
- Will now show unified inbox sidebar with correctly focused account when new account added.
- Cleans up the code a little bit, but this package still needs major refactor
Test Plan: Missing!
Reviewers: jackie, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3002
Summary: Just a small patch to address bad messaging
Test Plan: Run one new test!
Reviewers: jackie, juan
Reviewed By: jackie, juan
Differential Revision: https://phab.nylas.com/D3000
commit 50d0cfb87c
Author: Ben Gotow <bengotow@gmail.com>
Date: Fri May 27 14:01:49 2016 -0700
IdentityStore conveniene methods for subscription state
commit 80c3c7b956
Author: Ben Gotow <bengotow@gmail.com>
Date: Fri May 27 12:03:53 2016 -0700
Periodically refresh identity, show expired notice in top bar
commit 5dc39efe98
Merge: 4c4f463906ea74
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Thu May 26 15:17:46 2016 -0700
Merge branch 'bengotow/n1-pro' of github.com:nylas/N1 into bengotow/n1-pro
commit 4c4f463f4b
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Thu May 26 15:16:48 2016 -0700
Hijack links inside email that go to billing site and add SSO to them
commit 906ea74807
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 26 12:02:29 2016 -0700
Add custom welcome page for upgrading users
commit 2ba9aedfe9
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Wed May 25 17:27:12 2016 -0700
Add styling to Subscription tab in prefs
commit 384433a338
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 16:21:18 2016 -0700
Add better style reset, more IdentityStore changes
commit c4f9dfb4e4
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 15:29:41 2016 -0700
Add subscription tab
commit bd4c25405a
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 14:18:40 2016 -0700
Point to billing-staging for now
commit 578e808bfc
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 13:30:13 2016 -0700
Rename account helpers > onboarding helpers
commit dfea0a9861
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 13:26:46 2016 -0700
A few minor fixes
commit 7110217fd4
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 12:58:21 2016 -0700
feat(onboarding): Nylas Pro onboarding overhaul
Summary:
Rip out all invite-related code
Enable Templates and Translate by default
Scrub packages page, unused code in onboarding pkg
Remove resizing
New onboarding screens
IMAP provider list, validation
Call success with response object as well
Renaming and tweaks
Test Plan: No tests yet
Reviewers: evan, juan, jackie
Differential Revision: https://phab.nylas.com/D2985
commit dc9ea45ca9
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 12:52:39 2016 -0700
Renaming and tweaks
commit 5ca4cd31ce
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 11:03:57 2016 -0700
Call success with response object as well
commit 45f14f9b00
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 24 18:26:38 2016 -0700
IMAP provider list, validation
commit c6ca124e6e
Author: Ben Gotow <bengotow@gmail.com>
Date: Sat May 21 11:14:44 2016 -0700
New onboarding screens
commit dad918d926
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:37:31 2016 -0700
Remove resizing
commit ecb1a569e2
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:36:04 2016 -0700
Scrub packages page, unused code in onboarding pkg
commit 3e0a44156c
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:33:12 2016 -0700
Enable Templates and Translate by default
commit 0d218bc86f
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:30:47 2016 -0700
Rip out all invite-related code
Summary:
- Fixes several selection and focus issues along the way
- Can now preview what tokens will look like when not editing
- Adds decorator to listen to mail merge session changes and removes a bunch of duplicated code
- Gets rid of all imperative code (and specs) that had to imperatively
reach into the dom to update the tokens
Test Plan: - Unit tests
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2989
Summary:
This diff introduces several updates to mail merge to improve the procedure for sending a list of drafts.
Specifically, sending mass email will now:
- Clear mail merge metadata on the drafts that will actually be sent
- Upload attached files only /once/, and reuse those files on the drafts that will actually be sent
- Minimize database writes for new drafts being created
- Will queue a SendManyDraftsTask that will subsequently queue the necessary SendDraftTasks and keep track of them, and notify of any failed tasks
TODO:
- Add state to MailMerge plugin for failed sends and ability to attempt to re send them
Test Plan: - TODO
Reviewers: evan, bengotow, jackie
Reviewed By: bengotow, jackie
Subscribers: jackie
Differential Revision: https://phab.nylas.com/D2973
Summary:
SEE ASSOCIATED SUBMODULE DIFF
This enables rich React components (like the Scheduler's `NewEventCard`)
to be used in contenteditables.
We introduce the concept of an "Overlaid Component". These are rendered
React components that are absolutely positioned on top of an equivalent
"Anchor" in a contenteditable.
Inside the contenteditable are special `<img />` tags that have an
id corresponding to a particular rich overlaid component. This way, even
if those img tags are cut and pasted or moved, they'll have a mapping to a
particular component stored in the `OverlaidComponentStore`. Img tags
are fairly well handled natively by contenteditable and allow you to
maniuplate these overlaid components as normal text elements.
The `OverlaidComponentStore` is responsible for listening to and managing
the state of the Anchors and their equivalent OverlaidComponents.
We use a decorator called `ListenToChanges` that allows us to wrap
components to update their corresponding anchor. Since we need to know
about ALL changes that could affect rendered height and width, we need to
use a `MuatationListener` instead of the React render cycle.
This is only the initial diff. There are several TODOs here:
https://paper.dropbox.com/doc/Composer-Overlaid-Components-FoZrF0cFggzSUZirZ9MNo
Test Plan: TODO. Manual
Reviewers: juan, bengotow
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2946
Summary:
- Simplify undoManager to just maintain the undo/redo history items
- DraftEditingSession manages snapshotting state of draft, hack allows it to also save selection (still hoping to eventually put selection in body HTML as markers)
- Switch from `debounce` to `throttle` style behavior so typing for along time followed by undo doesn't undo away your entire block.
This resolves two issues:
+ Changes to participant fields are no longer undoable because they go straight to the session.
+ Changes to metadata weren't undoable.
Test Plan: Tests WIP
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2956
- Will wait for categories to be ready before attempting to focus the
inbox for the new account, preventing a blank screen when a new account
is added
- Add temprary action to set the collapsed state of a sidebar action
after adding a new account
- Adds a piece of global state that will be persisted to
`NylasEnv.savedState` indicating wether the accounts for the sidebar
should be reset whenever the FocusedPerspective changes
- #2257
Summary:
Add basic globally accessible performance monitoring.
Allows us to measure load times for composer windows (or whatever else we
want) and view the data as a Histogram on Mixpanel
Test Plan: manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2965
- This error was still being thrown for a large number of accounts,
despite the fact that the N1-Snoozed category was being created
- This error was happening when adding a new account which did not already have a
snooze category in the backend:
- When the account is added the AccountStore triggers more than once,
causing the SnoozeStore to send more than one request to create the
same category. Any request after the first one will fail because the
category already exists
- The fix is not try to create a category unless the accounts have
actually changed
Summary:
Moves all reading / writing of config file to the main process,
to avoid needing to write code to lock across processes. This should also
be more efficient than re-loading the file in all processes when it's
saved.
Test Plan: Run tests
Reviewers: evan, jackie
Reviewed By: evan, jackie
Differential Revision: https://phab.nylas.com/D2963
Summary:
Adds ability to drop tokens in subject via a custom rendered subject field which
renders a contenteditable instead of an input.
Decided to completely replace the subject field via injected components for a
few resons:
- That's the way we are currently extending the functionality of the participant fields, so it keeps the plugin code consistent (at the cost of potentially more code)
- Completely replacing the subject for a contenteditable means we hace to do extra work to clean up the html before sending.
- Reusing our Contenteditable.cjsx class for the subject is overkill, but using a vanilla contenteditable meant duplicating a bunch of the code in that class if we want to add
Test Plan: Unit tests
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2949
Summary:
- Add some docs to Table components
- Updates Table components to use a TableDataSource instead of accessing arrays, cleans up code a bit
- Add enzyme lib to have a cleaner and simpler api to write tests for React Components
- Updates decorators to extend from the BaseComponent instead of vanilla Component, this way instance methods are still available on composed components
Test Plan: - Unit tests
Reviewers: evan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2941
* Added Less Is More Theme to internal-packages and README.md
* fixed Less Is More title in README.md
* removed units for values of zero
* updated readme, package title fix, theme topbar fix, message list adjustments
object-shorthand got turned off. We think it's fine to say {foo: foo} if
you want
quote-props is error consistent as neeeded.
Use custom file-by-file rules for global-require
- This prevented emoji selection via the popover from working on a new
window because the plugin is loaded after the contenteditable sets up
the action listeners, so we need to re set them on update
Summary:
- Remove nylas-long-connection.coffee duplicate code from sync worker package
and replace with delta-streaming-connection which uses NylasAPI.longConnection
- Replacement for XHR will come in another diff -- still need to clean up and
fix some edge cases
Test Plan:
- TODO! Will add test coverage for NylasLongConnection and
DeltaStreamingConnection
Reviewers: evan, bengotow
Reviewed By: evan, bengotow
Differential Revision: https://phab.nylas.com/D2875
Summary: This is mostly config changes.
Test Plan: Tested the Google OAuth flow.
Reviewers: bengotow, drew
Reviewed By: bengotow, drew
Differential Revision: https://phab.nylas.com/D2907
Summary: Adds CSV imports, proper styles to mail merge plugin and fixes a handful of bugs
Test Plan: TODO
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2925
Office 365 likes to format email addresses as follows:
Last Name, First Name (Some Description) <email@address.org>
This causes Contact.firstName() (and hence sometimes displayName()) to return
"Last Name," which looks a bit odd in the message/thread views.
The intent of the commit is to correctly parse these names so that (using the
above example):
- firstName = "First Name"
- lastName = "Last Name (Some Description)"
- fullName = "First Name Last Name (Some Description)"
These behavioral changes only impact names containing a ','.
I don't know that this really provides exhaustive coverage of Office 365, and
keeping the description as part of the last name is not completely guilt free,
but it's not any worse than the previous state of affairs which also has
the description in the same field but combined instead with (misplaced)
first name data.
Summary:
Keymaps & menus CSON => JSON, remove AtomKeymaps, CommandRegistry use of CSS selectors, use Mousetrap instead
Important Notes:
- The `application:` prefix is reserved for commands which are handled in the application process. Don't use it for other things. You will not receive the events in the window.
- Maintaining dynamic menus seems to come with quite an overhead, because Electron updates the entire menu every time. In the future, we'll need https://github.com/electron/electron/issues/528 to really make things nice. I will be tracking this upstream.
- The format for keyboard shortcuts has changed. `cmd-X` is now `command+shift+x`
Test Plan: Run tests
Reviewers: juan, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2917
Summary:
Adds Mail Merge Plugin
- Adds new table components to component kit
- Adds new extension points to allow dragging and dropping into composer contenteditable and participant fields and customizing participant fields
- Adds new decorators and other misc updates
- #1608
Test Plan: TODO
Reviewers: bengotow, evan
Reviewed By: bengotow, evan
Differential Revision: https://phab.nylas.com/D2895
Summary:
Adds an activity list view that shows message opens and link clicks in a
chronological feed.
TODO: Add badge for unread notifications and different styling for read/unread
notifications. Click item to jump to corresponding thread.
Test Plan: TODO.
Reviewers: evan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2915
Summary:
This diff is designed to dramatically speed up new window load time for
all window types and reduce memory consumption of our hot windows.
Before this diff, windows loaded in ~3 seconds. They now boot in a couple
hundred milliseconds without requiring to keep hot windows around for
each and every type of popout window we want to load quickly.
One of the largest bottlenecks was the `require`ing and initializing of
everything in `NylasExports`.
I changed `NylasExports` to be entirely lazily-loaded. Drafts and tasks
now register their constructors with a `StoreRegistry` and the
`TaskRegistry`. This lets us explicitly choose a time to activate these
stores in the window initalization instead of whenever nylas-exports
happens to be required first.
Before, NylasExports was required first when components were first
rendering. This made initial render extremely slow and made the proposed
time picker popout slow.
By moving require into the very initial window boot, we can create a new
scheme of hot windows that are "half loaded". All of the expensive
require-ing and store initialization is done. All we need to do is
activate the packages for just the one window.
This means that the hot window scheme needs to fundamentally change from
have fully pre-loaded windows, to having half-loaded empty hot windows
that can get their window props overridden again.
This led to a major refactor of the WindowManager to support this new
window scheme.
Along the way the API of WindowManager was significantly simplifed.
Instead of a bunch of special-cased windows, there are now consistent
interfaces to get and `ensure` windows are created and displayed. This
DRYed up a lot of repeated logic around showing or creating core windows.
This also allowed the consolidation of the core window configurations into
one place for much easier reasoning about what's getting booted up.
When a hot window goes "live" and gets populated, we simply change the
`windowType`. This now re-triggers the loading of all of the packages for
the window. All of the loading time is now just for the packages that
window requires since core Nylas is there thanks to the hot window
mechanism.
Unfortunately loading all of the packages for the composer was still
unnaceptably slow. The major issue was that all of the composer plugins
were taking a long time to process and initialize. The solution was to
have the main composer load first, then trigger another window load
settings change to change the `windowType` that loads in all of the
plugins.
Another major bottleneck was the `RetinaImg` name lookup on disk. This
requires traversing the entire static folder synchronously on boot. This
is now done once when the main window loads and saved in a cache in the
browser process. Any secondary windows simply ask the backend for this
cache and save the filesystem access time.
The Paper Doc below is the current set of manual tests I'm doing to make
sure no window interactions (there are a lot of them!) regressed.
Test Plan: https://paper.dropbox.com/doc/Window-Refactor-UYsgvjgdXgVlTw8nXTr9h
Reviewers: juan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2916
Hopefully fixes#1991
I don't have N1 setup locally, so this is a blind shot–would appreciate somebody who has it set up to pull this and verify this fixes the issue, but as far as I can tell it should.
The gist is:
> Looking at the code, what you do is use the `search/users` endpoint to find users by email and taking the repos from there. You then load the repositories of the username, but we can't sort those by most-starred: "sort string Can be one of `created`, `updated`, `pushed`, `full_name`. Default: `full_name`" *([src](https://developer.github.com/v3/repos/#list-user-repositories))*
> What we could instead do is use the search API, which **allows us to search for repositories by a specific user and sort by most starred**. This is a tiny bit hacky, but works perfectly fine. E.g. this is the URL for my most starred repos: `https://api.github.com/search/repositories?q=user:mxstbr&sort=stars&order=desc`
Summary:
Up until now, we've been requiring that every plugin control in the composer take the draftClientId, retreive the session, listen to it, build state from the draft, etc. This is a huge pain and is hard to explain to newcomers becaus it frankly makes no sense.
In 0.3.45 we made it so that the ComposerView always has a non-null draft and session. (It isn't rendered until they're available). In this diff, I just pass those through to all the plugins and remove all the session retrieval cruft.
Almost none of the buttons have state of their own, which I think is appropriate.
They do render on every keystroke, but they were already running code (to recompute their state) on each keystroke and profiling suggests this has no impact.
Prepare for immutable
In preparation for Immutable models, make the draft store proxy returns a !== draft if any changes have been made. This means you can safely know that a draft has changed if `props.draft !== nextProps.draft`
Test Plan: Run tests
Reviewers: juan, evan
Reviewed By: juan, evan
Differential Revision: https://phab.nylas.com/D2902
Summary:
Adds a new unified "Spam" folder and a unified "Unread" view,
which shows all the messages in your inbox which are unread.
Test Plan: Run tests
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2901
* fix(imports): switch to Electron's require('electron')
Electron in 0.37.5 phases out the usage of `require('built-in-module')`
in favor of `require('electron').builtInModule`. This commit corrects usage in
some cases that cause N1 to not start under Electron 0.37.5.
* fix(specs): use new Electron remote import
Summary:
On my machine the new emoji picker was causing "too many open file descriptor"
errors. I think that this was because it was creating 1300 image tags in 50msec.
I refactored this code so that it uses a single image tag and only loads one image
at a time. This could make it slower on some people's machines, but eliminates the
possibility of it breaking the app!
Test Plan: Run tests
Reviewers: jackie
Differential Revision: https://phab.nylas.com/D2878
* 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