Mailspring/internal_packages/participant-profile/lib/participant-profile-store.es6

89 lines
2.1 KiB
Text
Raw Normal View History

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'
feat(sidebar): Add thread list of currently selected participants Summary: WIP. I added a collection index to make displaying the threads of a currently selected participant on the sidebar easy and fast. The problem is that the `participants` of a thread, while a collection of `Contact` objects, have no "ids" for those contact objects. One idea was to create the join table but access contacts by email instead of id. This required a minor change to the way the data is entered in the join table. This means the sidebar can now simply do: `DatabaseStore.findAll(Thread).where(Thread.attributes.participants.contains('foo@bar.com'))` While I didn't for this initial test, we could also/instead create the `Message-Contact` join table. The trick about a Message-Contact table is that I believe we'd have to create additional columns further specifying which field we're interested in. The following two queries: `DatabaseStore.findAll(Message).where(Message.attributes.to.contains('foo@bar.com'))` `DatabaseStore.findAll(Message).where(Message.attributes.from.contains('foo@bar.com'))` would require additional columns in the `Message-Contact` join table because currently the only columns are `id` and `value`. In the case of the sidebar use case, I think the Thread participants is what you want to see anyway. Unfortunately an email-centric scheme can't distinguish between `noreply@phab.com <Evan>` and `noreply@phab.com <Juan>`. I actually think this may be a good thing since I think most people think in terms of email address as the unique key anyway and for the use case of showing related emails in the sidebar I'd rather overshow than undershow. This solution seems to be working pretty well in initial testing, but I want to see if you guys can think of anything this may subtly screw up down the line, or if you can think of a simpler way to do this. Test Plan: todo Reviewers: juan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2687
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)) {
const data = this.getCache(contact);
if (data.cacheDate) {
return data
}
return {}
feat(sidebar): Add thread list of currently selected participants Summary: WIP. I added a collection index to make displaying the threads of a currently selected participant on the sidebar easy and fast. The problem is that the `participants` of a thread, while a collection of `Contact` objects, have no "ids" for those contact objects. One idea was to create the join table but access contacts by email instead of id. This required a minor change to the way the data is entered in the join table. This means the sidebar can now simply do: `DatabaseStore.findAll(Thread).where(Thread.attributes.participants.contains('foo@bar.com'))` While I didn't for this initial test, we could also/instead create the `Message-Contact` join table. The trick about a Message-Contact table is that I believe we'd have to create additional columns further specifying which field we're interested in. The following two queries: `DatabaseStore.findAll(Message).where(Message.attributes.to.contains('foo@bar.com'))` `DatabaseStore.findAll(Message).where(Message.attributes.from.contains('foo@bar.com'))` would require additional columns in the `Message-Contact` join table because currently the only columns are `id` and `value`. In the case of the sidebar use case, I think the Thread participants is what you want to see anyway. Unfortunately an email-centric scheme can't distinguish between `noreply@phab.com <Evan>` and `noreply@phab.com <Juan>`. I actually think this may be a good thing since I think most people think in terms of email address as the unique key anyway and for the use case of showing related emails in the sidebar I'd rather overshow than undershow. This solution seems to be working pretty well in initial testing, but I want to see if you guys can think of anything this may subtly screw up down the line, or if you can think of a simpler way to do this. Test Plan: todo Reviewers: juan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2687
2016-03-10 03:33:31 +08:00
}
this.dataSource.find({email: contact.email}).then((data) => {
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)
feat(sidebar): Add thread list of currently selected participants Summary: WIP. I added a collection index to make displaying the threads of a currently selected participant on the sidebar easy and fast. The problem is that the `participants` of a thread, while a collection of `Contact` objects, have no "ids" for those contact objects. One idea was to create the join table but access contacts by email instead of id. This required a minor change to the way the data is entered in the join table. This means the sidebar can now simply do: `DatabaseStore.findAll(Thread).where(Thread.attributes.participants.contains('foo@bar.com'))` While I didn't for this initial test, we could also/instead create the `Message-Contact` join table. The trick about a Message-Contact table is that I believe we'd have to create additional columns further specifying which field we're interested in. The following two queries: `DatabaseStore.findAll(Message).where(Message.attributes.to.contains('foo@bar.com'))` `DatabaseStore.findAll(Message).where(Message.attributes.from.contains('foo@bar.com'))` would require additional columns in the `Message-Contact` join table because currently the only columns are `id` and `value`. In the case of the sidebar use case, I think the Thread participants is what you want to see anyway. Unfortunately an email-centric scheme can't distinguish between `noreply@phab.com <Evan>` and `noreply@phab.com <Juan>`. I actually think this may be a good thing since I think most people think in terms of email address as the unique key anyway and for the use case of showing related emails in the sidebar I'd rather overshow than undershow. This solution seems to be working pretty well in initial testing, but I want to see if you guys can think of anything this may subtly screw up down the line, or if you can think of a simpler way to do this. Test Plan: todo Reviewers: juan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2687
2016-03-10 03:33:31 +08:00
this.setCache(contact, data);
this.trigger()
}
2017-01-18 04:42:40 +08:00
}).catch((err = {}) => {
if (err.statusCode !== 404) {
throw err
}
feat(sidebar): Add thread list of currently selected participants Summary: WIP. I added a collection index to make displaying the threads of a currently selected participant on the sidebar easy and fast. The problem is that the `participants` of a thread, while a collection of `Contact` objects, have no "ids" for those contact objects. One idea was to create the join table but access contacts by email instead of id. This required a minor change to the way the data is entered in the join table. This means the sidebar can now simply do: `DatabaseStore.findAll(Thread).where(Thread.attributes.participants.contains('foo@bar.com'))` While I didn't for this initial test, we could also/instead create the `Message-Contact` join table. The trick about a Message-Contact table is that I believe we'd have to create additional columns further specifying which field we're interested in. The following two queries: `DatabaseStore.findAll(Message).where(Message.attributes.to.contains('foo@bar.com'))` `DatabaseStore.findAll(Message).where(Message.attributes.from.contains('foo@bar.com'))` would require additional columns in the `Message-Contact` join table because currently the only columns are `id` and `value`. In the case of the sidebar use case, I think the Thread participants is what you want to see anyway. Unfortunately an email-centric scheme can't distinguish between `noreply@phab.com <Evan>` and `noreply@phab.com <Juan>`. I actually think this may be a good thing since I think most people think in terms of email address as the unique key anyway and for the use case of showing related emails in the sidebar I'd rather overshow than undershow. This solution seems to be working pretty well in initial testing, but I want to see if you guys can think of anything this may subtly screw up down the line, or if you can think of a simpler way to do this. Test Plan: todo Reviewers: juan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2687
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)
})
}
feat(sidebar): Add thread list of currently selected participants Summary: WIP. I added a collection index to make displaying the threads of a currently selected participant on the sidebar easy and fast. The problem is that the `participants` of a thread, while a collection of `Contact` objects, have no "ids" for those contact objects. One idea was to create the join table but access contacts by email instead of id. This required a minor change to the way the data is entered in the join table. This means the sidebar can now simply do: `DatabaseStore.findAll(Thread).where(Thread.attributes.participants.contains('foo@bar.com'))` While I didn't for this initial test, we could also/instead create the `Message-Contact` join table. The trick about a Message-Contact table is that I believe we'd have to create additional columns further specifying which field we're interested in. The following two queries: `DatabaseStore.findAll(Message).where(Message.attributes.to.contains('foo@bar.com'))` `DatabaseStore.findAll(Message).where(Message.attributes.from.contains('foo@bar.com'))` would require additional columns in the `Message-Contact` join table because currently the only columns are `id` and `value`. In the case of the sidebar use case, I think the Thread participants is what you want to see anyway. Unfortunately an email-centric scheme can't distinguish between `noreply@phab.com <Evan>` and `noreply@phab.com <Juan>`. I actually think this may be a good thing since I think most people think in terms of email address as the unique key anyway and for the use case of showing related emails in the sidebar I'd rather overshow than undershow. This solution seems to be working pretty well in initial testing, but I want to see if you guys can think of anything this may subtly screw up down the line, or if you can think of a simpler way to do this. Test Plan: todo Reviewers: juan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2687
2016-03-10 03:33:31 +08:00
deactivate() {
// no op
}
}
const store = new ParticipantProfileStore()
export default store