feat(SFDC): Initial SFDC commit
Fixes to generated form error handling
Remove console fix css
Styles with tokenizing field and generated form
Gen form fixes for required
Gen form styles
Fix datepicker in generated form
Can compute plain text for messages
Add resolvePath. Fix bug in sidebar scoring
Plaintext fixes
Use new syntax for global plugin actions
fix(styles): fix input[type='url'] syntax error in inputs.less
Remove sendToAllWindows action
Style fix to generated form
bump(SFDC): 0.4.100
Trigger AppVeyor
Trigger AppVeyor
Add ci-build to appveyor yml
Only build mac
Publish all builds that make it to AppVeyor or Travis
Bump submodule
Update submodule to init recursively for appveyor
feat(win): add getAllWindowDimensions
bump(SFDC): 0.4.101
fix(form): generated form handles disabled inputs
Make tokeizing field editable
bump(SFDC): 0.4.102
bump(SFDC): 0.4.103
bump(SFDC): 0.4.104
bump(SFDC): 0.4.105
:art:(salesforce): Highlight prefilled fields
Form fixes
Fix prefill class
Fix z-index of fieldsets
Refactor our BoldedSearchResult component
Move and split sidebar section into thread list and toolbar
Fixing referenceTo
bump(SFDC): 0.4.106
bump(SFDC): 0.4.107
bump(SFDC): 0.4.108
Fix delete object from form
Don't show tokenizing input field borders on window
Close popover after adding existing opportunity
Fix required fields
bump(SFDC): 0.4.109
Merge submodule with master
Only store raw data for full object fetches
Use Salesforce error reporter
Refactor form and smart fields
Fix form validation
Remove DOM form validation
bump(SFDC): 0.4.110
Fix mini month view
bump(SFDC): 0.4.111
Fix Record Type layouts
bump(SFDC): 0.4.113
Fix click target
bump(version): 0.4.53 and update Changelog
fix(changelog): Update changelog to reflect latest puublished release
fix(thread-sharing): Update popover style
bump(build)
fix(thread-sharing): Find-thread, incr timestamp delta to 1min in ms
:art:(thread-sharing): Prefer url and querystring modules to parse url
fix(mail-merge): Correctly handle empty column names
fix(thread-sharing): Throw error when thread is /not/ found
fix(thread-sharing): Timestamp range in seconds
fix(N1.sh): Allow path to working copy to have spaces
bump(electron): Electron 1.4, node-sqlite 3.1.4+fts
fix(keymaps): Correctly map mod+z to undo, instead of just z (#2663)
fix(tutorial): Minor tweaks, finalized styling
Add link for Darkish theme (#2854)
Fix typo: dependencesi > dependencies (#2838)
feat(channels): Choose an update channel! Limited time only!
Summary: Just a small select input.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3282
fix(logging): Fix query logging: escape '%' properly
fix(trial): Compute “days remaining” in timezone-aware way
fix(util): Utils.deepClone properly clones dates
Merge submodule with master
bump(SFDC): 0.4.114
fix(trial): Move”days left” bar to the sidebar, new design
fix(lint): import ui-variables for linter
Refactor object store and gen form updates
feat(msg-list): Don't make participants mailto links, add context menu
fix(long-connection): Throw error for reporting, instead of just logging
design tweaks, breaking css up into files, update readme (#2858)
fix(darkside): `script/grunt lint` requires explicit LESS includes
fix(specs): Display which tests are console.logging
fix(promise): Don't use deprecated Promise.longStackTraces()
fix(error): Let APIErrors have proper stack traces
Update submodule
Revert "fix(promise): Don't use deprecated Promise.longStackTraces()"
This reverts commit ac7602155ce75c3d175e4610cd97c020ed798883.
Bump submodule
bump(SFDC): 0.4.115
fix(specs): Fix tests that were console.logging, bump coffee-react
fix(drag-drop): Restore support for thread dragging
fix(thread-sharing): Fix unloading plugin
fix(auth): Update autofill for Fastmail.fm
fix(tooltips): Position relative to custom container for composer
lint(*): Fix issue breaking the build
bump(react): 15.3.x, warning removal, thread-sharing tweaks
es6(db): Convert attribute class declarations to ES2016
es6(db): Didn’t wait for NylasLint…
hack(channel-picker): Hide Salesforce for now
fix(accounts): Restore account re-ordering
fix(specs): attribute conversion fixed bugs, broke specs
fix(task-queue): performLocal now operates serially
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
Add back in `isSameDomainAsMe`
es6(db): Query-related classes moved to ES2016
fix(task-queue): task queue dependencies are only for preceding tasks
bump(SFDC): 0.4.116
Revert "fix(task-queue): task queue dependencies are only for preceding tasks"
This reverts commit e1e8c1cd9429b5aa20e19d4e2b8eca7215aa4a2c.
Add sequentialId check to tasks
Design pass on SF icons
fix(search/long-conn): Process results buffer before ending connection (#750)
NylasLongConnection ends the connection when the 'end' event is emitted
by the `request` object. When this happens, the global connection buffer is cleared.
Also, the global buffer holds the data we've received from the connection, and
whenever we receive new data, we accumulate it in the buffer and call a processBuffer function
which is throttled to 400ms.
Given that the buffer is global state, and processing occurs
asynchronously with a delay of up to 400ms, if the 'end' event on the connection is
fired before we actually get to process the buffer, we would clear it and show no results.
This scenario currently only affected search because if we accidentally
threw away some data when streaming deltas, we will get that data again
when we reopen the delta streaming connection.
fix(tray): Flipped logic in displaying unread count
Add section to Message footer
bump(SFDC): 0.4.117
fix linter
bump(electron): Update to 1.4.1 to fix intermittent Symbol() error
es6(db): Query builder converted to ES6
fix(long-connection): `close` instead of `end` on network end event
NylasLongConnection.Status.Ended means that we can't open the
connection again. When we get a network level 'end' event, that doesn't
map to our meaning of `Ended`, so we should just close it instead
Fix db setup
bump(SFDC): 0.4.118
feat(transforms): Replace regexp body transforms with DOM approach
Summary:
We originally didn't do this because creating a DOM tree was loading images.
Using range.createContextualFragment seems to do it without the tree ever
being attached.
Accompanying changes to src/pro are here:
https://phab.nylas.com/D3300
https://github.com/nylas/edgehill/compare/bengotow/draft-dom-transformations?expand=1
Also rename applyTransformsToDraft => applyTransformsForSending. Needed
a new name because the function signature has changed. AFAIK there are no
open source plugins using the old functions.
Test Plan: All specs updated
Reviewers: evan, juan
Reviewed By: evan, juan
Differential Revision: https://phab.nylas.com/D3299
fix(tooltips): Defer display of background, ensure dot inside window
bump(SFDC): 0.4.119
Merged in latest master from N1
fix(attribute): fix es6 conversion error
bump(SFDC): 0.4.120
Include calendar fix
fix(warnings): Fix warnings for react unkown dom prop
When using the pattern `{...extraProps}` to transfer props in the render method,
if rendering a native dom element, react will issue a new warning if we
end up passing invalid dom props:
https://facebook.github.io/react/warnings/unknown-prop.html
This adds a helper library to exclude invalid fom props instead of
manually excluding props inside each render method
fix(attribute): fix es6 conversion error
fix(mail-merge): fix `applyExtensionTransformsToDraft` rename
bump(SFDC): 0.4.121
Add welcome modal with video
Move close button to modal component and update styling
Fix linter errors
fix(help): Better help URL
fix(mail-merge): Add test coverage
Add jitter to BackoffTimer
Summary:
This should help us avoid the thundering herd problem if we have some
kind of API outage affecting a wide number of clients.
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3297
fix(contact-sidebar): Correctly update selected contact
Sometimes, when selecting a contact (with name, email) inside a thread,
the dropdown (`<select>`) did not correctly reflect the selected
contact.
This was because when focusing a contact, the FocusedContactStore
queried that contact from the database just by email, and the contact
retured from the database became the focused one. However, sometimes the
returned contact might have the same email but different email, and
given that the `<select>` component is keyed by both name,email, it
couldn't find the appropriate <option> to render, so it could not update
to reflect the newly selected contact
Now, the FocusedContactStore queries by email and name to prevent this
Fix broken test
Summary:
Fixes a test that was broken due to my unfamiliarity with
CoffeeScript :-/
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3302
feat(inline-images): Drag & drop or paste inline images
Summary: Initial support for inline images. Tests still forthcoming!
Test Plan: WIP
Reviewers: mark, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3295
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
fix(lint)
es6(db): DatabaseTransaction & Query moved to ES6
fix(tasks): Add instrumentation to Task's performLocal
A slow performLocal may be one of the causes of #2725
update: Update CHANGELOG for v0.4.55
fix(whitespace)
fix(install-location): Update language and remove buggy regex
fix(tasks): Report slow performLocal only when it takes > 500ms
fix(mail-merge): Reduce max number of emails to 250
Almost always, you will get rate limited trying to send 500 emails.
Reduce to 250 to make it more reasonable
💄(sidebar): Github repos should not wrap
fix(sidebar): Command-click + href to open in background
Global window event handler should work when clicking elements /inside/ of an a tag with an href.
💄(mail-merge): Fix alignment and height of tokens
fix(composer): No need for overlaid z-index: 10, appearing over menus
fix(db): Add an index on Thread.client_id for modelify
fix(overlaid-comps): Check if supports preview only after we know exists
fix(warnings): Correctly remove all unknown props warnings
fix(thread-list): Use interaction handlers, don’t update selection directly
fix(drafts): Sanitize quoted text to avoid overlaid component issues [!!]
fix(lint): Change variable to const
fix(search): Update local search syntax to include more results
Add prefix search. Previously, if searching for a thread with a specific
subject, you had to type the entire subject. Searching for just a prefix
wouldn't return the result.
This should not affect any of the current search results, only add more results
fix(react): React refuses to add `partition` attr to webview
fix(identity): Always refresh accounts after identity
This fixes an issue where changing your Nylas ID didn’t refresh your accounts, and N1 would still think they were invalid.
fix(db): Messages with empty bodies always showing loading spinner due to ‘’ == null
Bump submodule
fix(composer): Dedupe registered key bindings to avoid double undo in composer
fix(calendar): CSS layout fix for Chromium 53
fix(mail-merge): Reduce limit to 150 messages, improve error handling
fix(composer): Add additional isMounted checks
Resolves this exception: https://gist.github.com/jstejada/a26dc6a7a2896dcef9be3cec60eaecdb
fix(perspectives): More robust validation of saved perspectives, never open to blank screen
fix(specs): Fix mail merge specs
:art:(thread-sharing): Fix icon
fix(lint): Fix coffeelint errors
fix(draft-list): Don't render html string in draft subject
fix(dev): Pretty print deltas
:art:(activity-list): punctuation
fix(window-state): Per electron#7278, save state in beforeunload
Related:
https://github.com/electron/electron/issues/7278
https://github.com/atom/atom/pull/3223/files
As of Chromium 36, unload is async and @zcbenz does not think it happens reliabily in Electron. Move saving of window state to beforeunload, following suit with Atom.
fix(composer): Wrap composer instead of allowing overflow-x
fix(spec): remove unnecessary messages & prevent extra hot window
bump(SFDC): 0.4.123
fix(linter): fix linter error
fix(linter): fix linter error
rm(ship-logs): Remove unused log shipping, prevents many-processes bug on win32
feat(bios): Linkify twitter hashtags and mentions in bios
fix(composer): When pasting links that are tracked, extract actual link
fix(self-hosting) Don't load packages that don't support self-hosting
feat(self-hosting) Add onboarding page about self-hosting plugin restrictions
bump(verison): 0.4.56, more items in changelog
fix(data-source): Wait until the next cycle to cleanup
Fixes a crash when switching to the thread list from the draft list, where there are very briefly zero observers.
:lipstick:(share-thread): Fix positioning of share thread button
fix(tutorial-tips): Don't display when component is not visible
fix(participants): When copying, include space #2871
fix(spellcheck): Do not spellcheck <code>, <a>, <pre> tags
This fixes #2877. The templates feature becomes broken when variable names contain misspellings.
fix(specs): Minor spec fixes
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
Put acess tokens and refresh tokens in keychain
fix modal spacing
bump(SFDC): 0.4.125
fix tokenizing field margins
fix(tutorial-tips): Recompute pos when theme changes
fix(share-thread): Closed when blurred when blurred or new thread selected
fix(dev-mode): Don’t save to config.json, use flag instead
Turns out even the built, packaged version of the app can be restarted into dev mode by adding `—dev` to argv and using the new relaunch API.
es6(db): Move DatabaseStore to ES6
:lipstick:(outline-view): Add title attr for tooltips
fix+:art:(notifs): Cleanup, handle nonexistent thread when opening notification
Notifications now check to see the thread they are supposed to open
exists.
Also, clean up FocusedContentStore._onFocus so that it doesn't have the side
effect of dispatching another action and messay logic.
Instead, added Actions.ensureCategoryFocused, to focus any category, and which
should be used separately from focusing content (notifications now use
this action for "opening" the thread)
Also, convert FocusedPerspectiveStore to ES6
fix(specs): Activity List
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
:hocho: Last remaining traces of coffeescript in submodule!
fix(tools): Make `arc lint` great again
Add proper arc config for linting ES6 files with eslint
fix(files): When download mode is “manual” prompt about inline attachments
Summary:
When you have your "Download attachments for new mail" setting set
to "manually", inline images always appear broken with no explanation.
This patch listens for the image load to fail and displays a button which
queues the fetchFile task on click. This seemed like the best approach because
it doesn't slow down the loading of the message with more fstats / lookups.
(Seeing if the file has already been downloaded is an async operation)
Test Plan: No specs atm
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3313
feat(sidebar-notifs) Create sidebar notifications to replace old bars
Summary:
Move the old bar notifications to the sidebar, and only display one notification
at a time using a priority-rating system. Remove all of the old notification
infrastructure.
Test Plan: Added specs, also reproduced notifications locally
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3310
bump(submodule)
fix(lint)
fix(phising): Handle scenarios where input is malformed (Sentry 51642)
https://sentry.nylas.com/sentry/edgehill/group/51642/
fix(templates): Handle error when scanning dir (Sentry 44351)
https://sentry.nylas.com/sentry/edgehill/group/44351/
fix(perspectives): Restore when only account cannot be found (Sentry 59061)
https://sentry.nylas.com/sentry/edgehill/group/59061/
refator(notification): move base notification to nylas-component-kit
Remove all salesforce objects on logout
Add syncing of salesforce objects
Summary:
Depends on D3327
- Also remove all coffeescript
- Make it so salesforce mail label grabs opportunity from database
- Make sure metadata is kept in sync when salesforce objects are deleted
- Set up stub for Salesforce Object cache via SalesforceObjectStore
- Cleanups here and there
Test Plan: Manual
Reviewers: jackie, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3328
fix(db): Switch to better-sqlite3, resolves offline issue
Summary:
Better-SQLite3 is a fork of node-sqlite3 which includes a re-written JavaScript interface. It’s more synchronous, but better reflects what is actually sync vs. async in sqlite’s C++ API. (Not much is really async under the hood.) This diff uses a branch of better-sqlite3 I’ve edited to support Node 6.
In my tests, this branch spends 3.24x less time executing queries than `master`. (Measured time spent in calls to `this._db[run|all|get]` over the first 5000 queries of initial sync. It also increased the performance of starring a thread in the thread list by 28%.
This library also allows us to use a prepared statement cache, which is great because we often make the same queries repeatedly as query subscriptions refresh the UI and deltas are dumped into the app. The old interface didn’t expose statements (cached query plans) to JS.
better-sqlite3 advertises that it uses the JS garbage collector instead of lower level C++ memory management. I tested syncing my entire mailbox to verify that memory usage is not significantly different on this branch after a lot of queries have been made.
Finally, it looks like we can finally stop building sqlite3 from scratch in `script/bootstrap`. This library builds properly with `apm install`. 🎉
We might want to change the DatabaseStore and DatabaseTransaction classes more, now that it’s possible to execute queries synchronously. It could make things cleaner and get us out of promise-hell in a few places. In this diff I tried to change as little as possible.
Test Plan: Run tests, everything still works
Reviewers: juan, jackie
Reviewed By: juan, jackie
Differential Revision: https://phab.nylas.com/D3315
Fixing broken screenshot link (#2911)
Replacing with new screenshot
fix(onboarding): Fire event when user selects account type
bump(sqlite3): Fix issue with CI build / bindings location
fix(reporter): Handle errors cleaning log files (Sentry #6887)
Switch spellcheck libaries
Summary:
Switch to electron-spellchecker, which will allow N1 to
spellcheck more intelligently across languages. It auto-
detects languages and downloads dictionaries on the fly.
Test Plan: Specs, manual testing
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3319
Update Windows.md
fix(jquery): remove jquery
fix(spec): remove unused spec helpers
fix(specs) convert nylas-protocol-handler-spec to ES6 (#2886)
fix(win32): Still need custom sqlite3 build cmd for win32 😥
This also includes a bump of the better-sqlite3 module to support compilation on ia32.
feat(popout-threads) Add functionality to open threads in popout windows
Summary:
Threads can now be opened in separate windows. This can be done via the popout
icon next to the print icon, or by double-clicking the thread when in double-
pane mode. Note that the single-click action is still fired, which is why
double-clicking does not work in single-pane mode. The popout icon changes to a
pop-in icon while in the popout window, to allow users to collapse it back into
the main window.
Test Plan: Tested locally
Reviewers: evan, juan
Reviewed By: juan
Subscribers: sdw
Differential Revision: https://phab.nylas.com/D3332
fix(analytics): Add pgp encryption events
Email Encrypted
Email Encryption Errored
Email Decrypted
Email Decryption Errored
feat(win32): Allow N1 to become the system-wide mailto: handler
Summary: This will address the longstanding concern in #417
Test Plan: No new tests
Reviewers: juan, evan
Reviewed By: juan, evan
Maniphest Tasks: T7065
Differential Revision: https://phab.nylas.com/D3322
bump(version): 0.4.57
(0.4.58 was accidentally in prev commit)
fix(readme): Improve Win32 build instructions
fix(readme): More Win32-specific instructions
fix(spellchecker): Use cross-platform misspellings, fix lint error
feat(calendar): can pick which calendars you want displayed
Summary:
Adds a resizable column next to the calendar that lets you pick which
calendars you want to turn on and off.
The picker sidebar styling mimics that of the main account sidebar.
Calendars are grouped by account.
We store the disabled calendars in in your config.
I added a `notIn` SQL method so it'll perform `WHERE calendarId NOT IN
['a', 'b', ...]` instead of `NOT (WHERE calendarId IN ['a', 'b', 'c'])`
I wanted it to be an exclusion (instead of inclusion) list so the default
was "all on" and we didn't need to always fetch the full list of
calendarIds from the database to compare against.
This also fixed a test that was failing constantly: The Query Subscription
Pool Spec was not being properly reset on each test. As a result, the test
would fail with an instance of a query subscription that Jasmine would
attempt to pretty print. Jasmine would fail to pretty print it because of
a jasmine bug that fails to properly display Objects with null prototypes.
The DatabaseStore's EventEmitter has a property with a null prototyp
causing the error
Test Plan: manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3336
fix(linter)
Merge submodule with master
Bump submodule
Bump database version and submodule
fix(contact): add hasSameDomainAsMe method to Contact
Better email syncing with Salesforce
feat(dock): Automatically add N1 to the OS X dock upon install
Note - you need to `killall Dock` to see this after it happens
Add main window calendar package
Summary: Add tiny helper app for calendar goodness
Test Plan: No tests yet
Reviewers: juan, halla
Reviewed By: halla
Differential Revision: https://phab.nylas.com/D3346
cleanup(*): Remove dead .bowerrc, .gitignore files
es6(db): Convert the ORM specs to ES2016
bump(Electron): 1.4.3
fix(license): Swap ref to GPLv3 with the whole thing so GitHub picks it up
Clean up spec-bootstrap and jasmine-helper
Convert spec-suite to es6
Extract out jasmine reporters
Move global imports back to jasmine-helper
Extract to N1SpecRunner
Fold jasmine-helper into spec runner
Convert `spec-suite` to `n1-spec-loader`
Convert spec-helper to es6
Remove unused methods from spec-helper
Move waitsForPromise to jasmine-extensions
Move spec runner & deps into `n1-spec-runner` folder
Remove unused spec-helper-platform
Move specs into subfolders
Initial extraction of all methods out of of spec-helper
Fixes to spec-helper extraction
fix(spec):
Dramatically clean up and simply the spec bootup process.
Converting spec bootup system to es6 from coffee.
Converted old `jasmine-helper`, `spec-helper`, and `spec-suite` to a new
`n1-spec-runner` file.
Each of these old files had tons and tons of code related to various parts
of the spec bootup and running process.
Each of those parts have been extracted into individual files
Fix linter
Add icons to object types in picker
Remove opp references in popover
bump submodule
fix(spellchecker) Add a cache to improve performance
fix(notifs): Don’t render empty <img />
lint(*): Bump to ESLint 3.8
Update linter
bump submodule
bump submodule
bump submodule
bump submodule
bumpd submodule
Add sync thread toggles
Search focused contact by email
fix(mailto): Support body with \n or \r characters
Related to #2923
fix(thread-popout) Add missing packages to the 'thread-popout' window
Summary: Missed some non-composer packages that should be in the 'thread-popout' window
Test Plan: Tested locally
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3352
fix(mailto): Missing return in URL handling
fix(beta): Add notif when on beta channel
fix(db): Return; preventing ThreadSearch indexing
bump(version): 0.4.58
fix(specs): Don’t run update channel check in specs
fix(search): React warns, convert to ES2016
fix(search): Missed a .default
fix(spellcheck): Don’t include cld sources in build
fix(tooltips): Prevent tooltips from breaking wrapped components
fix(overlaid): Preview button was just invisible?
fix(auth): Hide title when long acct. err present
fix(onboarding): Don’t display “Welcome Back” screen
fix(accounts): Return correct list of email addresses
bump submodule
fix(misc) React warnings, kill cjsx
fix(accounts): Return correct list of email addresses
:lipstick:(thread-window): Update pop-out icons
lint(react): InlineImages don’t get session at send-time
fix(mail-merge): Upload files per draft to fix inline images
fix(mail-rules): Allow recipient filters to contain names #2942
bump(version): 0.4.59
:lipstick:(thread-window): Add thread-popin icon
update(changelog): 0.4.59
fix(search): Use fts search index for typeahead results
Summary: This improves performance of the search typeahead
Test Plan: Manual
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3363
fix(popover): :hocho: deprecated popover
fix(popover) Actually :hocho: deprecated popover
feat(flow): Add Flow to Nylas N1
Add flow-typed annotations
Ignore annoying submodules
Add /* @flow */ header to all js & es6 source files
Fix error about having number keys for objects
Remove @flow config from compile-support
Check es6 files
Add jasmine to flow
Revert "Add /* @flow */ header to all js & es6 source files"
This reverts commit c5a57bc402c53633b407b557f28ad12eaa8f27fe.
Update submodule
Add nylas global interface file
Fix generated form and bump
Fixes to generated form
Use customComponent in task
fix(warning): Don't render participant picker with null value
fix(thread-popout): Display the hidden message toggle in the thread-popout
Summary:
Also, maintain the perspective that the thread was opened in, so that the
proper messages are hidden (e.g. hide deleted messages when opened from the
inbox, but not when opened from the trash folder)
Test Plan: Tested locally
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3366
rm(grim): We’re not using Grim for deprecations
feat(quick-replies): Reply from Mac notifications
use single regex exec for toEquivalentEmailForm (#2962)
Fix JSON spacing (#2958)
Match JSON style to rest of file
Fix issue #2758. Press Escape after a finished search to get back to … (#2939)
* Fix issue #2758. Press Escape after a finished search to get back to Inbox
Use a keydown event when search bar is in focus to capture escape key press
* fix(search): Convert to ES2016
:art:(notifications): Remove indent and left padding from notifications
Revert "Fix issue #2758. Press Escape after a finished search to get back to … (#2939)"
This reverts commit 6377da8291adb2abb17e69db1e5eafb90de7ef0b.
This was already fixed in https://github.com/nylas/N1/commit/a95c17bce357d99e020fadb7e86fe5c2703c4fa2
fix(utils): Don’t overwrite _ in global scope
feat(tokens): Multi-select for tokenized text fields
Test Plan: Lots of tests, mostly updated to enzyme. Not many new ones.
Reviewers: evan, juan, jackie
Reviewed By: juan, jackie
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3374
fix(tokenizing-text): Re-add shouldBreakOnKeydown prop
build: bump eslint-plugin-import version
feat(field): Let TokenizingTextFields be disabled and onEditMotion
2016-08-09 05:03:41 +08:00
|
|
|
import {DatabaseStore, Utils} from 'nylas-exports'
|
2016-03-10 03:33:31 +08:00
|
|
|
import NylasStore from 'nylas-store'
|
|
|
|
import ClearbitDataSource from './clearbit-data-source'
|
|
|
|
|
|
|
|
// TODO: Back with Metadata
|
|
|
|
const contactCache = {}
|
|
|
|
const CACHE_SIZE = 100
|
|
|
|
const contactCacheKeyIndex = []
|
|
|
|
|
|
|
|
class ParticipantProfileStore extends NylasStore {
|
|
|
|
activate() {
|
|
|
|
this.cacheExpiry = 1000 * 60 * 60 * 24 // 1 day
|
|
|
|
this.dataSource = new ClearbitDataSource()
|
|
|
|
}
|
|
|
|
|
|
|
|
dataForContact(contact) {
|
|
|
|
if (!contact) {
|
|
|
|
return {}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Utils.likelyNonHumanEmail(contact.email)) {
|
|
|
|
return {}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.inCache(contact)) {
|
2016-03-11 07:16:32 +08:00
|
|
|
const data = this.getCache(contact);
|
|
|
|
if (data.cacheDate) {
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
return {}
|
2016-03-10 03:33:31 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
this.dataSource.find({email: contact.email}).then((data) => {
|
2016-03-11 03:21:24 +08:00
|
|
|
if (data && data.email === contact.email) {
|
feat(SFDC): Initial SFDC commit
Fixes to generated form error handling
Remove console fix css
Styles with tokenizing field and generated form
Gen form fixes for required
Gen form styles
Fix datepicker in generated form
Can compute plain text for messages
Add resolvePath. Fix bug in sidebar scoring
Plaintext fixes
Use new syntax for global plugin actions
fix(styles): fix input[type='url'] syntax error in inputs.less
Remove sendToAllWindows action
Style fix to generated form
bump(SFDC): 0.4.100
Trigger AppVeyor
Trigger AppVeyor
Add ci-build to appveyor yml
Only build mac
Publish all builds that make it to AppVeyor or Travis
Bump submodule
Update submodule to init recursively for appveyor
feat(win): add getAllWindowDimensions
bump(SFDC): 0.4.101
fix(form): generated form handles disabled inputs
Make tokeizing field editable
bump(SFDC): 0.4.102
bump(SFDC): 0.4.103
bump(SFDC): 0.4.104
bump(SFDC): 0.4.105
:art:(salesforce): Highlight prefilled fields
Form fixes
Fix prefill class
Fix z-index of fieldsets
Refactor our BoldedSearchResult component
Move and split sidebar section into thread list and toolbar
Fixing referenceTo
bump(SFDC): 0.4.106
bump(SFDC): 0.4.107
bump(SFDC): 0.4.108
Fix delete object from form
Don't show tokenizing input field borders on window
Close popover after adding existing opportunity
Fix required fields
bump(SFDC): 0.4.109
Merge submodule with master
Only store raw data for full object fetches
Use Salesforce error reporter
Refactor form and smart fields
Fix form validation
Remove DOM form validation
bump(SFDC): 0.4.110
Fix mini month view
bump(SFDC): 0.4.111
Fix Record Type layouts
bump(SFDC): 0.4.113
Fix click target
bump(version): 0.4.53 and update Changelog
fix(changelog): Update changelog to reflect latest puublished release
fix(thread-sharing): Update popover style
bump(build)
fix(thread-sharing): Find-thread, incr timestamp delta to 1min in ms
:art:(thread-sharing): Prefer url and querystring modules to parse url
fix(mail-merge): Correctly handle empty column names
fix(thread-sharing): Throw error when thread is /not/ found
fix(thread-sharing): Timestamp range in seconds
fix(N1.sh): Allow path to working copy to have spaces
bump(electron): Electron 1.4, node-sqlite 3.1.4+fts
fix(keymaps): Correctly map mod+z to undo, instead of just z (#2663)
fix(tutorial): Minor tweaks, finalized styling
Add link for Darkish theme (#2854)
Fix typo: dependencesi > dependencies (#2838)
feat(channels): Choose an update channel! Limited time only!
Summary: Just a small select input.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3282
fix(logging): Fix query logging: escape '%' properly
fix(trial): Compute “days remaining” in timezone-aware way
fix(util): Utils.deepClone properly clones dates
Merge submodule with master
bump(SFDC): 0.4.114
fix(trial): Move”days left” bar to the sidebar, new design
fix(lint): import ui-variables for linter
Refactor object store and gen form updates
feat(msg-list): Don't make participants mailto links, add context menu
fix(long-connection): Throw error for reporting, instead of just logging
design tweaks, breaking css up into files, update readme (#2858)
fix(darkside): `script/grunt lint` requires explicit LESS includes
fix(specs): Display which tests are console.logging
fix(promise): Don't use deprecated Promise.longStackTraces()
fix(error): Let APIErrors have proper stack traces
Update submodule
Revert "fix(promise): Don't use deprecated Promise.longStackTraces()"
This reverts commit ac7602155ce75c3d175e4610cd97c020ed798883.
Bump submodule
bump(SFDC): 0.4.115
fix(specs): Fix tests that were console.logging, bump coffee-react
fix(drag-drop): Restore support for thread dragging
fix(thread-sharing): Fix unloading plugin
fix(auth): Update autofill for Fastmail.fm
fix(tooltips): Position relative to custom container for composer
lint(*): Fix issue breaking the build
bump(react): 15.3.x, warning removal, thread-sharing tweaks
es6(db): Convert attribute class declarations to ES2016
es6(db): Didn’t wait for NylasLint…
hack(channel-picker): Hide Salesforce for now
fix(accounts): Restore account re-ordering
fix(specs): attribute conversion fixed bugs, broke specs
fix(task-queue): performLocal now operates serially
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
Add back in `isSameDomainAsMe`
es6(db): Query-related classes moved to ES2016
fix(task-queue): task queue dependencies are only for preceding tasks
bump(SFDC): 0.4.116
Revert "fix(task-queue): task queue dependencies are only for preceding tasks"
This reverts commit e1e8c1cd9429b5aa20e19d4e2b8eca7215aa4a2c.
Add sequentialId check to tasks
Design pass on SF icons
fix(search/long-conn): Process results buffer before ending connection (#750)
NylasLongConnection ends the connection when the 'end' event is emitted
by the `request` object. When this happens, the global connection buffer is cleared.
Also, the global buffer holds the data we've received from the connection, and
whenever we receive new data, we accumulate it in the buffer and call a processBuffer function
which is throttled to 400ms.
Given that the buffer is global state, and processing occurs
asynchronously with a delay of up to 400ms, if the 'end' event on the connection is
fired before we actually get to process the buffer, we would clear it and show no results.
This scenario currently only affected search because if we accidentally
threw away some data when streaming deltas, we will get that data again
when we reopen the delta streaming connection.
fix(tray): Flipped logic in displaying unread count
Add section to Message footer
bump(SFDC): 0.4.117
fix linter
bump(electron): Update to 1.4.1 to fix intermittent Symbol() error
es6(db): Query builder converted to ES6
fix(long-connection): `close` instead of `end` on network end event
NylasLongConnection.Status.Ended means that we can't open the
connection again. When we get a network level 'end' event, that doesn't
map to our meaning of `Ended`, so we should just close it instead
Fix db setup
bump(SFDC): 0.4.118
feat(transforms): Replace regexp body transforms with DOM approach
Summary:
We originally didn't do this because creating a DOM tree was loading images.
Using range.createContextualFragment seems to do it without the tree ever
being attached.
Accompanying changes to src/pro are here:
https://phab.nylas.com/D3300
https://github.com/nylas/edgehill/compare/bengotow/draft-dom-transformations?expand=1
Also rename applyTransformsToDraft => applyTransformsForSending. Needed
a new name because the function signature has changed. AFAIK there are no
open source plugins using the old functions.
Test Plan: All specs updated
Reviewers: evan, juan
Reviewed By: evan, juan
Differential Revision: https://phab.nylas.com/D3299
fix(tooltips): Defer display of background, ensure dot inside window
bump(SFDC): 0.4.119
Merged in latest master from N1
fix(attribute): fix es6 conversion error
bump(SFDC): 0.4.120
Include calendar fix
fix(warnings): Fix warnings for react unkown dom prop
When using the pattern `{...extraProps}` to transfer props in the render method,
if rendering a native dom element, react will issue a new warning if we
end up passing invalid dom props:
https://facebook.github.io/react/warnings/unknown-prop.html
This adds a helper library to exclude invalid fom props instead of
manually excluding props inside each render method
fix(attribute): fix es6 conversion error
fix(mail-merge): fix `applyExtensionTransformsToDraft` rename
bump(SFDC): 0.4.121
Add welcome modal with video
Move close button to modal component and update styling
Fix linter errors
fix(help): Better help URL
fix(mail-merge): Add test coverage
Add jitter to BackoffTimer
Summary:
This should help us avoid the thundering herd problem if we have some
kind of API outage affecting a wide number of clients.
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3297
fix(contact-sidebar): Correctly update selected contact
Sometimes, when selecting a contact (with name, email) inside a thread,
the dropdown (`<select>`) did not correctly reflect the selected
contact.
This was because when focusing a contact, the FocusedContactStore
queried that contact from the database just by email, and the contact
retured from the database became the focused one. However, sometimes the
returned contact might have the same email but different email, and
given that the `<select>` component is keyed by both name,email, it
couldn't find the appropriate <option> to render, so it could not update
to reflect the newly selected contact
Now, the FocusedContactStore queries by email and name to prevent this
Fix broken test
Summary:
Fixes a test that was broken due to my unfamiliarity with
CoffeeScript :-/
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3302
feat(inline-images): Drag & drop or paste inline images
Summary: Initial support for inline images. Tests still forthcoming!
Test Plan: WIP
Reviewers: mark, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3295
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
fix(lint)
es6(db): DatabaseTransaction & Query moved to ES6
fix(tasks): Add instrumentation to Task's performLocal
A slow performLocal may be one of the causes of #2725
update: Update CHANGELOG for v0.4.55
fix(whitespace)
fix(install-location): Update language and remove buggy regex
fix(tasks): Report slow performLocal only when it takes > 500ms
fix(mail-merge): Reduce max number of emails to 250
Almost always, you will get rate limited trying to send 500 emails.
Reduce to 250 to make it more reasonable
💄(sidebar): Github repos should not wrap
fix(sidebar): Command-click + href to open in background
Global window event handler should work when clicking elements /inside/ of an a tag with an href.
💄(mail-merge): Fix alignment and height of tokens
fix(composer): No need for overlaid z-index: 10, appearing over menus
fix(db): Add an index on Thread.client_id for modelify
fix(overlaid-comps): Check if supports preview only after we know exists
fix(warnings): Correctly remove all unknown props warnings
fix(thread-list): Use interaction handlers, don’t update selection directly
fix(drafts): Sanitize quoted text to avoid overlaid component issues [!!]
fix(lint): Change variable to const
fix(search): Update local search syntax to include more results
Add prefix search. Previously, if searching for a thread with a specific
subject, you had to type the entire subject. Searching for just a prefix
wouldn't return the result.
This should not affect any of the current search results, only add more results
fix(react): React refuses to add `partition` attr to webview
fix(identity): Always refresh accounts after identity
This fixes an issue where changing your Nylas ID didn’t refresh your accounts, and N1 would still think they were invalid.
fix(db): Messages with empty bodies always showing loading spinner due to ‘’ == null
Bump submodule
fix(composer): Dedupe registered key bindings to avoid double undo in composer
fix(calendar): CSS layout fix for Chromium 53
fix(mail-merge): Reduce limit to 150 messages, improve error handling
fix(composer): Add additional isMounted checks
Resolves this exception: https://gist.github.com/jstejada/a26dc6a7a2896dcef9be3cec60eaecdb
fix(perspectives): More robust validation of saved perspectives, never open to blank screen
fix(specs): Fix mail merge specs
:art:(thread-sharing): Fix icon
fix(lint): Fix coffeelint errors
fix(draft-list): Don't render html string in draft subject
fix(dev): Pretty print deltas
:art:(activity-list): punctuation
fix(window-state): Per electron#7278, save state in beforeunload
Related:
https://github.com/electron/electron/issues/7278
https://github.com/atom/atom/pull/3223/files
As of Chromium 36, unload is async and @zcbenz does not think it happens reliabily in Electron. Move saving of window state to beforeunload, following suit with Atom.
fix(composer): Wrap composer instead of allowing overflow-x
fix(spec): remove unnecessary messages & prevent extra hot window
bump(SFDC): 0.4.123
fix(linter): fix linter error
fix(linter): fix linter error
rm(ship-logs): Remove unused log shipping, prevents many-processes bug on win32
feat(bios): Linkify twitter hashtags and mentions in bios
fix(composer): When pasting links that are tracked, extract actual link
fix(self-hosting) Don't load packages that don't support self-hosting
feat(self-hosting) Add onboarding page about self-hosting plugin restrictions
bump(verison): 0.4.56, more items in changelog
fix(data-source): Wait until the next cycle to cleanup
Fixes a crash when switching to the thread list from the draft list, where there are very briefly zero observers.
:lipstick:(share-thread): Fix positioning of share thread button
fix(tutorial-tips): Don't display when component is not visible
fix(participants): When copying, include space #2871
fix(spellcheck): Do not spellcheck <code>, <a>, <pre> tags
This fixes #2877. The templates feature becomes broken when variable names contain misspellings.
fix(specs): Minor spec fixes
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
Put acess tokens and refresh tokens in keychain
fix modal spacing
bump(SFDC): 0.4.125
fix tokenizing field margins
fix(tutorial-tips): Recompute pos when theme changes
fix(share-thread): Closed when blurred when blurred or new thread selected
fix(dev-mode): Don’t save to config.json, use flag instead
Turns out even the built, packaged version of the app can be restarted into dev mode by adding `—dev` to argv and using the new relaunch API.
es6(db): Move DatabaseStore to ES6
:lipstick:(outline-view): Add title attr for tooltips
fix+:art:(notifs): Cleanup, handle nonexistent thread when opening notification
Notifications now check to see the thread they are supposed to open
exists.
Also, clean up FocusedContentStore._onFocus so that it doesn't have the side
effect of dispatching another action and messay logic.
Instead, added Actions.ensureCategoryFocused, to focus any category, and which
should be used separately from focusing content (notifications now use
this action for "opening" the thread)
Also, convert FocusedPerspectiveStore to ES6
fix(specs): Activity List
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
:hocho: Last remaining traces of coffeescript in submodule!
fix(tools): Make `arc lint` great again
Add proper arc config for linting ES6 files with eslint
fix(files): When download mode is “manual” prompt about inline attachments
Summary:
When you have your "Download attachments for new mail" setting set
to "manually", inline images always appear broken with no explanation.
This patch listens for the image load to fail and displays a button which
queues the fetchFile task on click. This seemed like the best approach because
it doesn't slow down the loading of the message with more fstats / lookups.
(Seeing if the file has already been downloaded is an async operation)
Test Plan: No specs atm
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3313
feat(sidebar-notifs) Create sidebar notifications to replace old bars
Summary:
Move the old bar notifications to the sidebar, and only display one notification
at a time using a priority-rating system. Remove all of the old notification
infrastructure.
Test Plan: Added specs, also reproduced notifications locally
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3310
bump(submodule)
fix(lint)
fix(phising): Handle scenarios where input is malformed (Sentry 51642)
https://sentry.nylas.com/sentry/edgehill/group/51642/
fix(templates): Handle error when scanning dir (Sentry 44351)
https://sentry.nylas.com/sentry/edgehill/group/44351/
fix(perspectives): Restore when only account cannot be found (Sentry 59061)
https://sentry.nylas.com/sentry/edgehill/group/59061/
refator(notification): move base notification to nylas-component-kit
Remove all salesforce objects on logout
Add syncing of salesforce objects
Summary:
Depends on D3327
- Also remove all coffeescript
- Make it so salesforce mail label grabs opportunity from database
- Make sure metadata is kept in sync when salesforce objects are deleted
- Set up stub for Salesforce Object cache via SalesforceObjectStore
- Cleanups here and there
Test Plan: Manual
Reviewers: jackie, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3328
fix(db): Switch to better-sqlite3, resolves offline issue
Summary:
Better-SQLite3 is a fork of node-sqlite3 which includes a re-written JavaScript interface. It’s more synchronous, but better reflects what is actually sync vs. async in sqlite’s C++ API. (Not much is really async under the hood.) This diff uses a branch of better-sqlite3 I’ve edited to support Node 6.
In my tests, this branch spends 3.24x less time executing queries than `master`. (Measured time spent in calls to `this._db[run|all|get]` over the first 5000 queries of initial sync. It also increased the performance of starring a thread in the thread list by 28%.
This library also allows us to use a prepared statement cache, which is great because we often make the same queries repeatedly as query subscriptions refresh the UI and deltas are dumped into the app. The old interface didn’t expose statements (cached query plans) to JS.
better-sqlite3 advertises that it uses the JS garbage collector instead of lower level C++ memory management. I tested syncing my entire mailbox to verify that memory usage is not significantly different on this branch after a lot of queries have been made.
Finally, it looks like we can finally stop building sqlite3 from scratch in `script/bootstrap`. This library builds properly with `apm install`. 🎉
We might want to change the DatabaseStore and DatabaseTransaction classes more, now that it’s possible to execute queries synchronously. It could make things cleaner and get us out of promise-hell in a few places. In this diff I tried to change as little as possible.
Test Plan: Run tests, everything still works
Reviewers: juan, jackie
Reviewed By: juan, jackie
Differential Revision: https://phab.nylas.com/D3315
Fixing broken screenshot link (#2911)
Replacing with new screenshot
fix(onboarding): Fire event when user selects account type
bump(sqlite3): Fix issue with CI build / bindings location
fix(reporter): Handle errors cleaning log files (Sentry #6887)
Switch spellcheck libaries
Summary:
Switch to electron-spellchecker, which will allow N1 to
spellcheck more intelligently across languages. It auto-
detects languages and downloads dictionaries on the fly.
Test Plan: Specs, manual testing
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3319
Update Windows.md
fix(jquery): remove jquery
fix(spec): remove unused spec helpers
fix(specs) convert nylas-protocol-handler-spec to ES6 (#2886)
fix(win32): Still need custom sqlite3 build cmd for win32 😥
This also includes a bump of the better-sqlite3 module to support compilation on ia32.
feat(popout-threads) Add functionality to open threads in popout windows
Summary:
Threads can now be opened in separate windows. This can be done via the popout
icon next to the print icon, or by double-clicking the thread when in double-
pane mode. Note that the single-click action is still fired, which is why
double-clicking does not work in single-pane mode. The popout icon changes to a
pop-in icon while in the popout window, to allow users to collapse it back into
the main window.
Test Plan: Tested locally
Reviewers: evan, juan
Reviewed By: juan
Subscribers: sdw
Differential Revision: https://phab.nylas.com/D3332
fix(analytics): Add pgp encryption events
Email Encrypted
Email Encryption Errored
Email Decrypted
Email Decryption Errored
feat(win32): Allow N1 to become the system-wide mailto: handler
Summary: This will address the longstanding concern in #417
Test Plan: No new tests
Reviewers: juan, evan
Reviewed By: juan, evan
Maniphest Tasks: T7065
Differential Revision: https://phab.nylas.com/D3322
bump(version): 0.4.57
(0.4.58 was accidentally in prev commit)
fix(readme): Improve Win32 build instructions
fix(readme): More Win32-specific instructions
fix(spellchecker): Use cross-platform misspellings, fix lint error
feat(calendar): can pick which calendars you want displayed
Summary:
Adds a resizable column next to the calendar that lets you pick which
calendars you want to turn on and off.
The picker sidebar styling mimics that of the main account sidebar.
Calendars are grouped by account.
We store the disabled calendars in in your config.
I added a `notIn` SQL method so it'll perform `WHERE calendarId NOT IN
['a', 'b', ...]` instead of `NOT (WHERE calendarId IN ['a', 'b', 'c'])`
I wanted it to be an exclusion (instead of inclusion) list so the default
was "all on" and we didn't need to always fetch the full list of
calendarIds from the database to compare against.
This also fixed a test that was failing constantly: The Query Subscription
Pool Spec was not being properly reset on each test. As a result, the test
would fail with an instance of a query subscription that Jasmine would
attempt to pretty print. Jasmine would fail to pretty print it because of
a jasmine bug that fails to properly display Objects with null prototypes.
The DatabaseStore's EventEmitter has a property with a null prototyp
causing the error
Test Plan: manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3336
fix(linter)
Merge submodule with master
Bump submodule
Bump database version and submodule
fix(contact): add hasSameDomainAsMe method to Contact
Better email syncing with Salesforce
feat(dock): Automatically add N1 to the OS X dock upon install
Note - you need to `killall Dock` to see this after it happens
Add main window calendar package
Summary: Add tiny helper app for calendar goodness
Test Plan: No tests yet
Reviewers: juan, halla
Reviewed By: halla
Differential Revision: https://phab.nylas.com/D3346
cleanup(*): Remove dead .bowerrc, .gitignore files
es6(db): Convert the ORM specs to ES2016
bump(Electron): 1.4.3
fix(license): Swap ref to GPLv3 with the whole thing so GitHub picks it up
Clean up spec-bootstrap and jasmine-helper
Convert spec-suite to es6
Extract out jasmine reporters
Move global imports back to jasmine-helper
Extract to N1SpecRunner
Fold jasmine-helper into spec runner
Convert `spec-suite` to `n1-spec-loader`
Convert spec-helper to es6
Remove unused methods from spec-helper
Move waitsForPromise to jasmine-extensions
Move spec runner & deps into `n1-spec-runner` folder
Remove unused spec-helper-platform
Move specs into subfolders
Initial extraction of all methods out of of spec-helper
Fixes to spec-helper extraction
fix(spec):
Dramatically clean up and simply the spec bootup process.
Converting spec bootup system to es6 from coffee.
Converted old `jasmine-helper`, `spec-helper`, and `spec-suite` to a new
`n1-spec-runner` file.
Each of these old files had tons and tons of code related to various parts
of the spec bootup and running process.
Each of those parts have been extracted into individual files
Fix linter
Add icons to object types in picker
Remove opp references in popover
bump submodule
fix(spellchecker) Add a cache to improve performance
fix(notifs): Don’t render empty <img />
lint(*): Bump to ESLint 3.8
Update linter
bump submodule
bump submodule
bump submodule
bump submodule
bumpd submodule
Add sync thread toggles
Search focused contact by email
fix(mailto): Support body with \n or \r characters
Related to #2923
fix(thread-popout) Add missing packages to the 'thread-popout' window
Summary: Missed some non-composer packages that should be in the 'thread-popout' window
Test Plan: Tested locally
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3352
fix(mailto): Missing return in URL handling
fix(beta): Add notif when on beta channel
fix(db): Return; preventing ThreadSearch indexing
bump(version): 0.4.58
fix(specs): Don’t run update channel check in specs
fix(search): React warns, convert to ES2016
fix(search): Missed a .default
fix(spellcheck): Don’t include cld sources in build
fix(tooltips): Prevent tooltips from breaking wrapped components
fix(overlaid): Preview button was just invisible?
fix(auth): Hide title when long acct. err present
fix(onboarding): Don’t display “Welcome Back” screen
fix(accounts): Return correct list of email addresses
bump submodule
fix(misc) React warnings, kill cjsx
fix(accounts): Return correct list of email addresses
:lipstick:(thread-window): Update pop-out icons
lint(react): InlineImages don’t get session at send-time
fix(mail-merge): Upload files per draft to fix inline images
fix(mail-rules): Allow recipient filters to contain names #2942
bump(version): 0.4.59
:lipstick:(thread-window): Add thread-popin icon
update(changelog): 0.4.59
fix(search): Use fts search index for typeahead results
Summary: This improves performance of the search typeahead
Test Plan: Manual
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3363
fix(popover): :hocho: deprecated popover
fix(popover) Actually :hocho: deprecated popover
feat(flow): Add Flow to Nylas N1
Add flow-typed annotations
Ignore annoying submodules
Add /* @flow */ header to all js & es6 source files
Fix error about having number keys for objects
Remove @flow config from compile-support
Check es6 files
Add jasmine to flow
Revert "Add /* @flow */ header to all js & es6 source files"
This reverts commit c5a57bc402c53633b407b557f28ad12eaa8f27fe.
Update submodule
Add nylas global interface file
Fix generated form and bump
Fixes to generated form
Use customComponent in task
fix(warning): Don't render participant picker with null value
fix(thread-popout): Display the hidden message toggle in the thread-popout
Summary:
Also, maintain the perspective that the thread was opened in, so that the
proper messages are hidden (e.g. hide deleted messages when opened from the
inbox, but not when opened from the trash folder)
Test Plan: Tested locally
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3366
rm(grim): We’re not using Grim for deprecations
feat(quick-replies): Reply from Mac notifications
use single regex exec for toEquivalentEmailForm (#2962)
Fix JSON spacing (#2958)
Match JSON style to rest of file
Fix issue #2758. Press Escape after a finished search to get back to … (#2939)
* Fix issue #2758. Press Escape after a finished search to get back to Inbox
Use a keydown event when search bar is in focus to capture escape key press
* fix(search): Convert to ES2016
:art:(notifications): Remove indent and left padding from notifications
Revert "Fix issue #2758. Press Escape after a finished search to get back to … (#2939)"
This reverts commit 6377da8291adb2abb17e69db1e5eafb90de7ef0b.
This was already fixed in https://github.com/nylas/N1/commit/a95c17bce357d99e020fadb7e86fe5c2703c4fa2
fix(utils): Don’t overwrite _ in global scope
feat(tokens): Multi-select for tokenized text fields
Test Plan: Lots of tests, mostly updated to enzyme. Not many new ones.
Reviewers: evan, juan, jackie
Reviewed By: juan, jackie
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3374
fix(tokenizing-text): Re-add shouldBreakOnKeydown prop
build: bump eslint-plugin-import version
feat(field): Let TokenizingTextFields be disabled and onEditMotion
2016-08-09 05:03:41 +08:00
|
|
|
this.saveDataToContact(contact, data)
|
2016-03-10 03:33:31 +08:00
|
|
|
this.setCache(contact, data);
|
|
|
|
this.trigger()
|
|
|
|
}
|
2017-01-18 04:42:40 +08:00
|
|
|
}).catch((err = {}) => {
|
:art: Fix unhandled api rejections/Prefer promises over `success` option for api requests
Summary:
This commit modifies the api of NylasAPIRequest to /not/ take `success`
or `error` callback options at all, and only returns a Promise which you
can `then` and `catch` to handle the api response.
The fact that it returned a promise, and /also/ took `success` and
`error` callback options made it really confusing to use.
Additionaly, when using the callbacks intead of a promise, any errors
would be unhandled and reported to Sentry because even though the `error`
callback was being passed, the promise returned by `run()` still rejected and
no one was handling that reject, so it reached the `unhandledRejection` event
listener. This is undesirable because if you passed an `error` callback, it
means that you intended to handle it.
An example of this is calling the clearbit API, which will more often than
not return a 404, and even though we had an error handler which ignored the 404,
it still unecessarilly reported to Sentry, flooding it with events
Test Plan: manually check all updated codepaths still work
Reviewers: halla, spang, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3869
2017-02-10 01:19:41 +08:00
|
|
|
if (err.statusCode !== 404) {
|
|
|
|
throw err
|
|
|
|
}
|
2016-03-10 03:33:31 +08:00
|
|
|
})
|
|
|
|
return {}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: Back by metadata.
|
|
|
|
getCache(contact) {
|
|
|
|
return contactCache[contact.email]
|
|
|
|
}
|
|
|
|
|
|
|
|
inCache(contact) {
|
|
|
|
const cache = contactCache[contact.email]
|
|
|
|
if (!cache) { return false }
|
|
|
|
if (!cache.cacheDate || Date.now() - cache.cacheDate > this.cacheExpiry) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
setCache(contact, value) {
|
|
|
|
contactCache[contact.email] = value
|
|
|
|
contactCacheKeyIndex.push(contact.email)
|
|
|
|
if (contactCacheKeyIndex.length > CACHE_SIZE) {
|
|
|
|
delete contactCache[contactCacheKeyIndex.shift()]
|
|
|
|
}
|
|
|
|
return value
|
|
|
|
}
|
|
|
|
|
feat(SFDC): Initial SFDC commit
Fixes to generated form error handling
Remove console fix css
Styles with tokenizing field and generated form
Gen form fixes for required
Gen form styles
Fix datepicker in generated form
Can compute plain text for messages
Add resolvePath. Fix bug in sidebar scoring
Plaintext fixes
Use new syntax for global plugin actions
fix(styles): fix input[type='url'] syntax error in inputs.less
Remove sendToAllWindows action
Style fix to generated form
bump(SFDC): 0.4.100
Trigger AppVeyor
Trigger AppVeyor
Add ci-build to appveyor yml
Only build mac
Publish all builds that make it to AppVeyor or Travis
Bump submodule
Update submodule to init recursively for appveyor
feat(win): add getAllWindowDimensions
bump(SFDC): 0.4.101
fix(form): generated form handles disabled inputs
Make tokeizing field editable
bump(SFDC): 0.4.102
bump(SFDC): 0.4.103
bump(SFDC): 0.4.104
bump(SFDC): 0.4.105
:art:(salesforce): Highlight prefilled fields
Form fixes
Fix prefill class
Fix z-index of fieldsets
Refactor our BoldedSearchResult component
Move and split sidebar section into thread list and toolbar
Fixing referenceTo
bump(SFDC): 0.4.106
bump(SFDC): 0.4.107
bump(SFDC): 0.4.108
Fix delete object from form
Don't show tokenizing input field borders on window
Close popover after adding existing opportunity
Fix required fields
bump(SFDC): 0.4.109
Merge submodule with master
Only store raw data for full object fetches
Use Salesforce error reporter
Refactor form and smart fields
Fix form validation
Remove DOM form validation
bump(SFDC): 0.4.110
Fix mini month view
bump(SFDC): 0.4.111
Fix Record Type layouts
bump(SFDC): 0.4.113
Fix click target
bump(version): 0.4.53 and update Changelog
fix(changelog): Update changelog to reflect latest puublished release
fix(thread-sharing): Update popover style
bump(build)
fix(thread-sharing): Find-thread, incr timestamp delta to 1min in ms
:art:(thread-sharing): Prefer url and querystring modules to parse url
fix(mail-merge): Correctly handle empty column names
fix(thread-sharing): Throw error when thread is /not/ found
fix(thread-sharing): Timestamp range in seconds
fix(N1.sh): Allow path to working copy to have spaces
bump(electron): Electron 1.4, node-sqlite 3.1.4+fts
fix(keymaps): Correctly map mod+z to undo, instead of just z (#2663)
fix(tutorial): Minor tweaks, finalized styling
Add link for Darkish theme (#2854)
Fix typo: dependencesi > dependencies (#2838)
feat(channels): Choose an update channel! Limited time only!
Summary: Just a small select input.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3282
fix(logging): Fix query logging: escape '%' properly
fix(trial): Compute “days remaining” in timezone-aware way
fix(util): Utils.deepClone properly clones dates
Merge submodule with master
bump(SFDC): 0.4.114
fix(trial): Move”days left” bar to the sidebar, new design
fix(lint): import ui-variables for linter
Refactor object store and gen form updates
feat(msg-list): Don't make participants mailto links, add context menu
fix(long-connection): Throw error for reporting, instead of just logging
design tweaks, breaking css up into files, update readme (#2858)
fix(darkside): `script/grunt lint` requires explicit LESS includes
fix(specs): Display which tests are console.logging
fix(promise): Don't use deprecated Promise.longStackTraces()
fix(error): Let APIErrors have proper stack traces
Update submodule
Revert "fix(promise): Don't use deprecated Promise.longStackTraces()"
This reverts commit ac7602155ce75c3d175e4610cd97c020ed798883.
Bump submodule
bump(SFDC): 0.4.115
fix(specs): Fix tests that were console.logging, bump coffee-react
fix(drag-drop): Restore support for thread dragging
fix(thread-sharing): Fix unloading plugin
fix(auth): Update autofill for Fastmail.fm
fix(tooltips): Position relative to custom container for composer
lint(*): Fix issue breaking the build
bump(react): 15.3.x, warning removal, thread-sharing tweaks
es6(db): Convert attribute class declarations to ES2016
es6(db): Didn’t wait for NylasLint…
hack(channel-picker): Hide Salesforce for now
fix(accounts): Restore account re-ordering
fix(specs): attribute conversion fixed bugs, broke specs
fix(task-queue): performLocal now operates serially
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
Add back in `isSameDomainAsMe`
es6(db): Query-related classes moved to ES2016
fix(task-queue): task queue dependencies are only for preceding tasks
bump(SFDC): 0.4.116
Revert "fix(task-queue): task queue dependencies are only for preceding tasks"
This reverts commit e1e8c1cd9429b5aa20e19d4e2b8eca7215aa4a2c.
Add sequentialId check to tasks
Design pass on SF icons
fix(search/long-conn): Process results buffer before ending connection (#750)
NylasLongConnection ends the connection when the 'end' event is emitted
by the `request` object. When this happens, the global connection buffer is cleared.
Also, the global buffer holds the data we've received from the connection, and
whenever we receive new data, we accumulate it in the buffer and call a processBuffer function
which is throttled to 400ms.
Given that the buffer is global state, and processing occurs
asynchronously with a delay of up to 400ms, if the 'end' event on the connection is
fired before we actually get to process the buffer, we would clear it and show no results.
This scenario currently only affected search because if we accidentally
threw away some data when streaming deltas, we will get that data again
when we reopen the delta streaming connection.
fix(tray): Flipped logic in displaying unread count
Add section to Message footer
bump(SFDC): 0.4.117
fix linter
bump(electron): Update to 1.4.1 to fix intermittent Symbol() error
es6(db): Query builder converted to ES6
fix(long-connection): `close` instead of `end` on network end event
NylasLongConnection.Status.Ended means that we can't open the
connection again. When we get a network level 'end' event, that doesn't
map to our meaning of `Ended`, so we should just close it instead
Fix db setup
bump(SFDC): 0.4.118
feat(transforms): Replace regexp body transforms with DOM approach
Summary:
We originally didn't do this because creating a DOM tree was loading images.
Using range.createContextualFragment seems to do it without the tree ever
being attached.
Accompanying changes to src/pro are here:
https://phab.nylas.com/D3300
https://github.com/nylas/edgehill/compare/bengotow/draft-dom-transformations?expand=1
Also rename applyTransformsToDraft => applyTransformsForSending. Needed
a new name because the function signature has changed. AFAIK there are no
open source plugins using the old functions.
Test Plan: All specs updated
Reviewers: evan, juan
Reviewed By: evan, juan
Differential Revision: https://phab.nylas.com/D3299
fix(tooltips): Defer display of background, ensure dot inside window
bump(SFDC): 0.4.119
Merged in latest master from N1
fix(attribute): fix es6 conversion error
bump(SFDC): 0.4.120
Include calendar fix
fix(warnings): Fix warnings for react unkown dom prop
When using the pattern `{...extraProps}` to transfer props in the render method,
if rendering a native dom element, react will issue a new warning if we
end up passing invalid dom props:
https://facebook.github.io/react/warnings/unknown-prop.html
This adds a helper library to exclude invalid fom props instead of
manually excluding props inside each render method
fix(attribute): fix es6 conversion error
fix(mail-merge): fix `applyExtensionTransformsToDraft` rename
bump(SFDC): 0.4.121
Add welcome modal with video
Move close button to modal component and update styling
Fix linter errors
fix(help): Better help URL
fix(mail-merge): Add test coverage
Add jitter to BackoffTimer
Summary:
This should help us avoid the thundering herd problem if we have some
kind of API outage affecting a wide number of clients.
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3297
fix(contact-sidebar): Correctly update selected contact
Sometimes, when selecting a contact (with name, email) inside a thread,
the dropdown (`<select>`) did not correctly reflect the selected
contact.
This was because when focusing a contact, the FocusedContactStore
queried that contact from the database just by email, and the contact
retured from the database became the focused one. However, sometimes the
returned contact might have the same email but different email, and
given that the `<select>` component is keyed by both name,email, it
couldn't find the appropriate <option> to render, so it could not update
to reflect the newly selected contact
Now, the FocusedContactStore queries by email and name to prevent this
Fix broken test
Summary:
Fixes a test that was broken due to my unfamiliarity with
CoffeeScript :-/
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3302
feat(inline-images): Drag & drop or paste inline images
Summary: Initial support for inline images. Tests still forthcoming!
Test Plan: WIP
Reviewers: mark, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3295
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543f45b4948be6b54b116342c42bf31bd.
fix(lint)
es6(db): DatabaseTransaction & Query moved to ES6
fix(tasks): Add instrumentation to Task's performLocal
A slow performLocal may be one of the causes of #2725
update: Update CHANGELOG for v0.4.55
fix(whitespace)
fix(install-location): Update language and remove buggy regex
fix(tasks): Report slow performLocal only when it takes > 500ms
fix(mail-merge): Reduce max number of emails to 250
Almost always, you will get rate limited trying to send 500 emails.
Reduce to 250 to make it more reasonable
💄(sidebar): Github repos should not wrap
fix(sidebar): Command-click + href to open in background
Global window event handler should work when clicking elements /inside/ of an a tag with an href.
💄(mail-merge): Fix alignment and height of tokens
fix(composer): No need for overlaid z-index: 10, appearing over menus
fix(db): Add an index on Thread.client_id for modelify
fix(overlaid-comps): Check if supports preview only after we know exists
fix(warnings): Correctly remove all unknown props warnings
fix(thread-list): Use interaction handlers, don’t update selection directly
fix(drafts): Sanitize quoted text to avoid overlaid component issues [!!]
fix(lint): Change variable to const
fix(search): Update local search syntax to include more results
Add prefix search. Previously, if searching for a thread with a specific
subject, you had to type the entire subject. Searching for just a prefix
wouldn't return the result.
This should not affect any of the current search results, only add more results
fix(react): React refuses to add `partition` attr to webview
fix(identity): Always refresh accounts after identity
This fixes an issue where changing your Nylas ID didn’t refresh your accounts, and N1 would still think they were invalid.
fix(db): Messages with empty bodies always showing loading spinner due to ‘’ == null
Bump submodule
fix(composer): Dedupe registered key bindings to avoid double undo in composer
fix(calendar): CSS layout fix for Chromium 53
fix(mail-merge): Reduce limit to 150 messages, improve error handling
fix(composer): Add additional isMounted checks
Resolves this exception: https://gist.github.com/jstejada/a26dc6a7a2896dcef9be3cec60eaecdb
fix(perspectives): More robust validation of saved perspectives, never open to blank screen
fix(specs): Fix mail merge specs
:art:(thread-sharing): Fix icon
fix(lint): Fix coffeelint errors
fix(draft-list): Don't render html string in draft subject
fix(dev): Pretty print deltas
:art:(activity-list): punctuation
fix(window-state): Per electron#7278, save state in beforeunload
Related:
https://github.com/electron/electron/issues/7278
https://github.com/atom/atom/pull/3223/files
As of Chromium 36, unload is async and @zcbenz does not think it happens reliabily in Electron. Move saving of window state to beforeunload, following suit with Atom.
fix(composer): Wrap composer instead of allowing overflow-x
fix(spec): remove unnecessary messages & prevent extra hot window
bump(SFDC): 0.4.123
fix(linter): fix linter error
fix(linter): fix linter error
rm(ship-logs): Remove unused log shipping, prevents many-processes bug on win32
feat(bios): Linkify twitter hashtags and mentions in bios
fix(composer): When pasting links that are tracked, extract actual link
fix(self-hosting) Don't load packages that don't support self-hosting
feat(self-hosting) Add onboarding page about self-hosting plugin restrictions
bump(verison): 0.4.56, more items in changelog
fix(data-source): Wait until the next cycle to cleanup
Fixes a crash when switching to the thread list from the draft list, where there are very briefly zero observers.
:lipstick:(share-thread): Fix positioning of share thread button
fix(tutorial-tips): Don't display when component is not visible
fix(participants): When copying, include space #2871
fix(spellcheck): Do not spellcheck <code>, <a>, <pre> tags
This fixes #2877. The templates feature becomes broken when variable names contain misspellings.
fix(specs): Minor spec fixes
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
Put acess tokens and refresh tokens in keychain
fix modal spacing
bump(SFDC): 0.4.125
fix tokenizing field margins
fix(tutorial-tips): Recompute pos when theme changes
fix(share-thread): Closed when blurred when blurred or new thread selected
fix(dev-mode): Don’t save to config.json, use flag instead
Turns out even the built, packaged version of the app can be restarted into dev mode by adding `—dev` to argv and using the new relaunch API.
es6(db): Move DatabaseStore to ES6
:lipstick:(outline-view): Add title attr for tooltips
fix+:art:(notifs): Cleanup, handle nonexistent thread when opening notification
Notifications now check to see the thread they are supposed to open
exists.
Also, clean up FocusedContentStore._onFocus so that it doesn't have the side
effect of dispatching another action and messay logic.
Instead, added Actions.ensureCategoryFocused, to focus any category, and which
should be used separately from focusing content (notifications now use
this action for "opening" the thread)
Also, convert FocusedPerspectiveStore to ES6
fix(specs): Activity List
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
:hocho: Last remaining traces of coffeescript in submodule!
fix(tools): Make `arc lint` great again
Add proper arc config for linting ES6 files with eslint
fix(files): When download mode is “manual” prompt about inline attachments
Summary:
When you have your "Download attachments for new mail" setting set
to "manually", inline images always appear broken with no explanation.
This patch listens for the image load to fail and displays a button which
queues the fetchFile task on click. This seemed like the best approach because
it doesn't slow down the loading of the message with more fstats / lookups.
(Seeing if the file has already been downloaded is an async operation)
Test Plan: No specs atm
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3313
feat(sidebar-notifs) Create sidebar notifications to replace old bars
Summary:
Move the old bar notifications to the sidebar, and only display one notification
at a time using a priority-rating system. Remove all of the old notification
infrastructure.
Test Plan: Added specs, also reproduced notifications locally
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3310
bump(submodule)
fix(lint)
fix(phising): Handle scenarios where input is malformed (Sentry 51642)
https://sentry.nylas.com/sentry/edgehill/group/51642/
fix(templates): Handle error when scanning dir (Sentry 44351)
https://sentry.nylas.com/sentry/edgehill/group/44351/
fix(perspectives): Restore when only account cannot be found (Sentry 59061)
https://sentry.nylas.com/sentry/edgehill/group/59061/
refator(notification): move base notification to nylas-component-kit
Remove all salesforce objects on logout
Add syncing of salesforce objects
Summary:
Depends on D3327
- Also remove all coffeescript
- Make it so salesforce mail label grabs opportunity from database
- Make sure metadata is kept in sync when salesforce objects are deleted
- Set up stub for Salesforce Object cache via SalesforceObjectStore
- Cleanups here and there
Test Plan: Manual
Reviewers: jackie, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3328
fix(db): Switch to better-sqlite3, resolves offline issue
Summary:
Better-SQLite3 is a fork of node-sqlite3 which includes a re-written JavaScript interface. It’s more synchronous, but better reflects what is actually sync vs. async in sqlite’s C++ API. (Not much is really async under the hood.) This diff uses a branch of better-sqlite3 I’ve edited to support Node 6.
In my tests, this branch spends 3.24x less time executing queries than `master`. (Measured time spent in calls to `this._db[run|all|get]` over the first 5000 queries of initial sync. It also increased the performance of starring a thread in the thread list by 28%.
This library also allows us to use a prepared statement cache, which is great because we often make the same queries repeatedly as query subscriptions refresh the UI and deltas are dumped into the app. The old interface didn’t expose statements (cached query plans) to JS.
better-sqlite3 advertises that it uses the JS garbage collector instead of lower level C++ memory management. I tested syncing my entire mailbox to verify that memory usage is not significantly different on this branch after a lot of queries have been made.
Finally, it looks like we can finally stop building sqlite3 from scratch in `script/bootstrap`. This library builds properly with `apm install`. 🎉
We might want to change the DatabaseStore and DatabaseTransaction classes more, now that it’s possible to execute queries synchronously. It could make things cleaner and get us out of promise-hell in a few places. In this diff I tried to change as little as possible.
Test Plan: Run tests, everything still works
Reviewers: juan, jackie
Reviewed By: juan, jackie
Differential Revision: https://phab.nylas.com/D3315
Fixing broken screenshot link (#2911)
Replacing with new screenshot
fix(onboarding): Fire event when user selects account type
bump(sqlite3): Fix issue with CI build / bindings location
fix(reporter): Handle errors cleaning log files (Sentry #6887)
Switch spellcheck libaries
Summary:
Switch to electron-spellchecker, which will allow N1 to
spellcheck more intelligently across languages. It auto-
detects languages and downloads dictionaries on the fly.
Test Plan: Specs, manual testing
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3319
Update Windows.md
fix(jquery): remove jquery
fix(spec): remove unused spec helpers
fix(specs) convert nylas-protocol-handler-spec to ES6 (#2886)
fix(win32): Still need custom sqlite3 build cmd for win32 😥
This also includes a bump of the better-sqlite3 module to support compilation on ia32.
feat(popout-threads) Add functionality to open threads in popout windows
Summary:
Threads can now be opened in separate windows. This can be done via the popout
icon next to the print icon, or by double-clicking the thread when in double-
pane mode. Note that the single-click action is still fired, which is why
double-clicking does not work in single-pane mode. The popout icon changes to a
pop-in icon while in the popout window, to allow users to collapse it back into
the main window.
Test Plan: Tested locally
Reviewers: evan, juan
Reviewed By: juan
Subscribers: sdw
Differential Revision: https://phab.nylas.com/D3332
fix(analytics): Add pgp encryption events
Email Encrypted
Email Encryption Errored
Email Decrypted
Email Decryption Errored
feat(win32): Allow N1 to become the system-wide mailto: handler
Summary: This will address the longstanding concern in #417
Test Plan: No new tests
Reviewers: juan, evan
Reviewed By: juan, evan
Maniphest Tasks: T7065
Differential Revision: https://phab.nylas.com/D3322
bump(version): 0.4.57
(0.4.58 was accidentally in prev commit)
fix(readme): Improve Win32 build instructions
fix(readme): More Win32-specific instructions
fix(spellchecker): Use cross-platform misspellings, fix lint error
feat(calendar): can pick which calendars you want displayed
Summary:
Adds a resizable column next to the calendar that lets you pick which
calendars you want to turn on and off.
The picker sidebar styling mimics that of the main account sidebar.
Calendars are grouped by account.
We store the disabled calendars in in your config.
I added a `notIn` SQL method so it'll perform `WHERE calendarId NOT IN
['a', 'b', ...]` instead of `NOT (WHERE calendarId IN ['a', 'b', 'c'])`
I wanted it to be an exclusion (instead of inclusion) list so the default
was "all on" and we didn't need to always fetch the full list of
calendarIds from the database to compare against.
This also fixed a test that was failing constantly: The Query Subscription
Pool Spec was not being properly reset on each test. As a result, the test
would fail with an instance of a query subscription that Jasmine would
attempt to pretty print. Jasmine would fail to pretty print it because of
a jasmine bug that fails to properly display Objects with null prototypes.
The DatabaseStore's EventEmitter has a property with a null prototyp
causing the error
Test Plan: manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3336
fix(linter)
Merge submodule with master
Bump submodule
Bump database version and submodule
fix(contact): add hasSameDomainAsMe method to Contact
Better email syncing with Salesforce
feat(dock): Automatically add N1 to the OS X dock upon install
Note - you need to `killall Dock` to see this after it happens
Add main window calendar package
Summary: Add tiny helper app for calendar goodness
Test Plan: No tests yet
Reviewers: juan, halla
Reviewed By: halla
Differential Revision: https://phab.nylas.com/D3346
cleanup(*): Remove dead .bowerrc, .gitignore files
es6(db): Convert the ORM specs to ES2016
bump(Electron): 1.4.3
fix(license): Swap ref to GPLv3 with the whole thing so GitHub picks it up
Clean up spec-bootstrap and jasmine-helper
Convert spec-suite to es6
Extract out jasmine reporters
Move global imports back to jasmine-helper
Extract to N1SpecRunner
Fold jasmine-helper into spec runner
Convert `spec-suite` to `n1-spec-loader`
Convert spec-helper to es6
Remove unused methods from spec-helper
Move waitsForPromise to jasmine-extensions
Move spec runner & deps into `n1-spec-runner` folder
Remove unused spec-helper-platform
Move specs into subfolders
Initial extraction of all methods out of of spec-helper
Fixes to spec-helper extraction
fix(spec):
Dramatically clean up and simply the spec bootup process.
Converting spec bootup system to es6 from coffee.
Converted old `jasmine-helper`, `spec-helper`, and `spec-suite` to a new
`n1-spec-runner` file.
Each of these old files had tons and tons of code related to various parts
of the spec bootup and running process.
Each of those parts have been extracted into individual files
Fix linter
Add icons to object types in picker
Remove opp references in popover
bump submodule
fix(spellchecker) Add a cache to improve performance
fix(notifs): Don’t render empty <img />
lint(*): Bump to ESLint 3.8
Update linter
bump submodule
bump submodule
bump submodule
bump submodule
bumpd submodule
Add sync thread toggles
Search focused contact by email
fix(mailto): Support body with \n or \r characters
Related to #2923
fix(thread-popout) Add missing packages to the 'thread-popout' window
Summary: Missed some non-composer packages that should be in the 'thread-popout' window
Test Plan: Tested locally
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3352
fix(mailto): Missing return in URL handling
fix(beta): Add notif when on beta channel
fix(db): Return; preventing ThreadSearch indexing
bump(version): 0.4.58
fix(specs): Don’t run update channel check in specs
fix(search): React warns, convert to ES2016
fix(search): Missed a .default
fix(spellcheck): Don’t include cld sources in build
fix(tooltips): Prevent tooltips from breaking wrapped components
fix(overlaid): Preview button was just invisible?
fix(auth): Hide title when long acct. err present
fix(onboarding): Don’t display “Welcome Back” screen
fix(accounts): Return correct list of email addresses
bump submodule
fix(misc) React warnings, kill cjsx
fix(accounts): Return correct list of email addresses
:lipstick:(thread-window): Update pop-out icons
lint(react): InlineImages don’t get session at send-time
fix(mail-merge): Upload files per draft to fix inline images
fix(mail-rules): Allow recipient filters to contain names #2942
bump(version): 0.4.59
:lipstick:(thread-window): Add thread-popin icon
update(changelog): 0.4.59
fix(search): Use fts search index for typeahead results
Summary: This improves performance of the search typeahead
Test Plan: Manual
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3363
fix(popover): :hocho: deprecated popover
fix(popover) Actually :hocho: deprecated popover
feat(flow): Add Flow to Nylas N1
Add flow-typed annotations
Ignore annoying submodules
Add /* @flow */ header to all js & es6 source files
Fix error about having number keys for objects
Remove @flow config from compile-support
Check es6 files
Add jasmine to flow
Revert "Add /* @flow */ header to all js & es6 source files"
This reverts commit c5a57bc402c53633b407b557f28ad12eaa8f27fe.
Update submodule
Add nylas global interface file
Fix generated form and bump
Fixes to generated form
Use customComponent in task
fix(warning): Don't render participant picker with null value
fix(thread-popout): Display the hidden message toggle in the thread-popout
Summary:
Also, maintain the perspective that the thread was opened in, so that the
proper messages are hidden (e.g. hide deleted messages when opened from the
inbox, but not when opened from the trash folder)
Test Plan: Tested locally
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3366
rm(grim): We’re not using Grim for deprecations
feat(quick-replies): Reply from Mac notifications
use single regex exec for toEquivalentEmailForm (#2962)
Fix JSON spacing (#2958)
Match JSON style to rest of file
Fix issue #2758. Press Escape after a finished search to get back to … (#2939)
* Fix issue #2758. Press Escape after a finished search to get back to Inbox
Use a keydown event when search bar is in focus to capture escape key press
* fix(search): Convert to ES2016
:art:(notifications): Remove indent and left padding from notifications
Revert "Fix issue #2758. Press Escape after a finished search to get back to … (#2939)"
This reverts commit 6377da8291adb2abb17e69db1e5eafb90de7ef0b.
This was already fixed in https://github.com/nylas/N1/commit/a95c17bce357d99e020fadb7e86fe5c2703c4fa2
fix(utils): Don’t overwrite _ in global scope
feat(tokens): Multi-select for tokenized text fields
Test Plan: Lots of tests, mostly updated to enzyme. Not many new ones.
Reviewers: evan, juan, jackie
Reviewed By: juan, jackie
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3374
fix(tokenizing-text): Re-add shouldBreakOnKeydown prop
build: bump eslint-plugin-import version
feat(field): Let TokenizingTextFields be disabled and onEditMotion
2016-08-09 05:03:41 +08:00
|
|
|
/**
|
|
|
|
* We save the clearbit data to the contat object in the database.
|
|
|
|
* This lets us load extra Clearbit data from other windows without
|
|
|
|
* needing to call a very expensive API again.
|
|
|
|
*/
|
|
|
|
saveDataToContact(contact, data) {
|
|
|
|
return DatabaseStore.inTransaction((t) => {
|
|
|
|
if (!contact.thirdPartyData) contact.thirdPartyData = {};
|
|
|
|
contact.thirdPartyData.clearbit = data
|
|
|
|
return t.persistModel(contact)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2016-03-10 03:33:31 +08:00
|
|
|
deactivate() {
|
|
|
|
// no op
|
|
|
|
}
|
|
|
|
}
|
2016-05-04 09:08:24 +08:00
|
|
|
const store = new ParticipantProfileStore()
|
|
|
|
export default store
|