Commit graph

849 commits

Author SHA1 Message Date
Ben Gotow 3160520017 fix(downloads): Replace path.sep when saving files - Sentry 8749 2016-01-11 11:49:05 -08:00
Evan Morikawa 92cd752284 feat(composer): can outdent blockquotes allowing you to reply inline
Summary:
You can now break up blockquotes (as in quoted text areas) by pressing
"delete" at the start of a line. This allows you to reply inline.

Test Plan: new tests

Reviewers: bengotow, juan

Reviewed By: bengotow, juan

Differential Revision: https://phab.nylas.com/D2421
2016-01-11 14:46:20 -05:00
Ben Gotow db7bc9e81c fix(quoted-text): Fix + test case for Sentry 8323, body el is quoted text 2016-01-11 11:14:34 -08:00
Juan Tejada f779b61dd5 fix(injected-component): Correctly call methods to the injected instance
- Adds check to `_runInnerDOMMethod` to check if inner is an UnsafeComponent and
relay the call appropriately
- Removes duplicated logic from `_setRequiredMethods`
2016-01-10 16:25:31 -08:00
Ben Gotow ab65387932 fix(scroll-region): top:0 or height:0 are valid for scrollToRect [sentry] 2016-01-08 17:47:49 -08:00
Evan Morikawa 12c0ff7fe8 fix(composer): undo/redo now properly restores selection on new msg 2016-01-08 16:43:09 -08:00
Ben Gotow 4ae4d130ec fix(zoom): Only set zoom to valid numeric values 2016-01-08 15:10:54 -08:00
Ben Gotow a258ba4613 feat(zoom): Allow users to override interface zoom. Fixes #699 2016-01-08 11:32:32 -08:00
Ben Gotow c0ff88d1b0 Revert "bump(electron): 0.35.4 => 0.36.2"
This reverts commit 863bda2f86.
2016-01-08 10:06:16 -08:00
Ben Gotow 3a86c34883 feat(newsletter): Manage subscription directly from N1 2016-01-07 18:44:40 -08:00
Ben Gotow 460a715e4d fix(examples): examples => packages, move away from installing them 2016-01-07 14:56:34 -08:00
Ben Gotow 863bda2f86 bump(electron): 0.35.4 => 0.36.2 2016-01-06 13:20:27 -08:00
Ben Gotow 1d94fcaaf9 fix(sig): Remove selectEnd, place cursor before sig
Summary: When focusing the composer, select the end of the last text block above any signatures / quoted text (which can be visible by default in Fwd:).

Test Plan: Run tests

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2411
2016-01-05 14:31:55 -08:00
Ben Gotow 7f80cc8038 fix(focus): Minor changes to composer focus logic to focus new drafts
Summary:
Remove FocusTrackingRegion—all CommandRegions should be focusable, and nesting the two creates varying behavior based on which is the parent

Calling focus() on an injected / unsafe component should always do /something/. Try the inner React method, inner DOM method, or call on ourselves

Rename contentEditable._focusEditor to "focus" since it intends to replace default focus behavior

In ComposerView, always change focus via setState, never by calling focus() directly. Rather than tracking `_lastFocusedField`, just focus whenever the activeElement isnt within the focusedField. Make body initial focus when draft is pristine...

...(ensures new drafts are focused)

Test Plan: Run tests

Reviewers: evan, juan

Reviewed By: evan, juan

Differential Revision: https://phab.nylas.com/D2406
2016-01-05 11:34:26 -08:00
Ben Gotow cb226d2a6f fix(icon): Use app icon on win32, use correct path on Linux 2016-01-05 11:25:36 -08:00
Juan Tejada dca00af8de fix(extensions): Add other missing return values 2016-01-04 13:30:52 -05:00
Juan Tejada d12e4fdc81 fix(extensions): Add missing return values 2016-01-04 13:23:45 -05:00
Juan Tejada 1f4f94c56d fix(extensions):Add missing api adapters for ComposerExtension methods 2016-01-04 10:52:39 -05:00
Juan Tejada f640ef4ee0 fix(extensions):Fix extension method calls that weren't passing args hash 2015-12-30 19:05:27 -05:00
Evan Morikawa 11b731891f feat(extension): async extensions
Summary:
WIP:

This is a quick patch for Drew to make extensions async

We'll need to think through the upgrade/deprecation plan to roll out async
extensions across all of our APIs.

Test Plan: TODO

Reviewers: drew, evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2392
2015-12-30 18:04:52 -05:00
Juan Tejada a8e771c033 fix(contenteditable): Fix nested list behavior:
Summary:
- Fixes #862
- Makes it behave like hackpad -- adding nested lists will indent the
  current list item
- Fix lint errors

Test Plan: - Integration tests

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2402
2015-12-30 15:21:05 -05:00
Juan Tejada b452be933a feat(column-width): Store column width state in the app
Summary:
- Fixes #833
- Allows column widths to be persisted between sessions

Test Plan: - Manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2401
2015-12-30 15:18:38 -05:00
Juan Tejada 6315bc9d80 fix(extension-adapter): Update adapter to support all versions of extension api we've used
Summary:
- Rewrites composer extension adpater to support all versions of the
  ComposerExtension API we've ever declared. This will allow old plugins (or
  plugins that haven't been reinstalled after update) to keep functioning
  without breaking N1
- Adds specs

Test Plan: - Unit tests

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2399
2015-12-30 15:11:37 -05:00
Juan Tejada 73f76de7fc fix(composer-focus): Fix focus behavior + update InjectedComponent props
Summary:
- Fixes bug with Composer focus caused by injected component. The composer body
  was being focused, but the cursor remained at the beginning of the content
  instead of at the end. This was caused because the focus method was being
  called before the content had actually been rendered to the dom.
  - Adds a callback to check when injected comp was actually rendered, and uses
    that to focus the body at the correct time.
  - Updates specs
- Updates behavior of focusing composer body when selecting threads in split
  mode --  resolves #T3444
  - It will focus the body when a thread is selcted via a click
  - It wont focus the body when a thread is selected via arrow keys
  - It will focus the body when a new inline reply is created
  - Updates specs

Test Plan: - Unit tests

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2393
2015-12-29 21:28:15 -05:00
Drew Regitsky be800ac89a refactor(templates): major additions and refactoring for the Templates plugin.
Summary:
Adds several new features to the templates plugin, fixes some existing bugs, and
refactors existing code.

New Plugin Features/Fixes:
- Changes the templates editor in preferences to allow variables to be entered with
 `{{brackets}}`. Handles many contenteditable complexities to implement.
- Better interaction for renaming and deleting of templates in the editor.
- Changes tabbing behavior when using templates. Tabbing between variables now wraps
  around, and typing tab from outside a variable region highlights the closest region.
- Prevents "Enter" key in the composer when inside a variable region, and strips all
  formatting/tags from within the region - this prevents major contenteditable issues
  that can result in inline CSS in the style of our variable regions, which will not be
  removed when sending.
- Shows a warning when choosing a template if it will replace existing text in a draft.
- Prevents invalid characters in template names (due to filenames, esp. on Windows),
  and shows an error message. Strips these characters from draft titles when making a
  template.
- Fixes a bug where TemplateStore's initialization code was being called multiple times.

New N1 code:
- Several new methods in `DOMUtils` useful for working with contenteditable.
- Implement some missing methods in `Editor`

Refactor:
- Major refactor/rewrite of template composer extension to use new DOMUtils methods
  and simplify the logic (while adding new functionality).

Remaining issues:
- `preferences-tempaltes.cjsx` and `template-editor.coffee` should be rewritten in ES6
  for consistency
- Need tests for new DOMUtils functions and for new Templates plugin code.

Test Plan: manual, need to update specs

Reviewers: evan, bengotow

Reviewed By: evan, bengotow

Subscribers: juan

Differential Revision: https://phab.nylas.com/D2382
2015-12-29 15:11:04 -08:00
Drew Regitsky 4bd46b055f fix(contenteditable): revert 36b4f3, call onClick in mouse-service 2015-12-29 14:57:07 -08:00
Drew Regitsky c09632966d fix(contenteditable): hook up onClick handler for extensions
Summary: Add missing code to make onClick work in contenteditable extensions.

Test Plan: manual

Reviewers: juan, evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2395
2015-12-29 14:41:00 -08:00
Ben Gotow 3c4d6b503b fix(mail-rules): Bail if a message is missing a thread 2015-12-29 14:21:42 -08:00
Ben Gotow 7973135dd3 fix(uploads): Cancel uploads when offline (#365), mark for refactor 2015-12-29 14:21:42 -08:00
Ben Gotow d209d6e615 Merge pull request #792 from Sumukh/at-character-parse
Names with @ are included in the contact name.
2015-12-29 12:20:00 -08:00
Ben Gotow e349062835 fix(regex): Chop leading '/" off emails if they are wrapped in quotes 2015-12-28 18:39:06 -08:00
Ben Gotow a573b70895 fix(mail-rules): Catch and disable mail rules building bad actions 2015-12-28 18:39:06 -08:00
Drew Regitsky 28c5c621a1 fix(contenteditable): add default prop for onSelectionChanged 2015-12-28 17:34:18 -08:00
Ben Gotow a52d0d415d fix(regex): Allow ', !, ?, ^, {, }, | in email addresses (Fixes #754) 2015-12-28 14:35:47 -08:00
Ben Gotow 8086c4183e fix(markAsRead): Option to mark read manually only (Fixes #804) 2015-12-28 14:23:34 -08:00
Ben Gotow fb862e9b74 fix(mailto): Parse query string manually to account for unencoded body (Fixes #815) 2015-12-28 13:58:24 -08:00
Ben Gotow f8e9d37501 fix(aliases): Recognize that email sent to alias is to "me" 2015-12-28 12:13:05 -08:00
Evan Morikawa be6191d6b6 fix(tab): fix import error 2015-12-23 15:48:41 -08:00
Ben Gotow af67597f0b feat(mail-rules): Per-account mail rules filter incoming, existing mail
Summary:
Originally, this was going to be a totally independent package, but
I wasn't able to isolate the functionality and get it tied in to
the delta-stream consumption. Here's how it currently works:

- The preferences package has a new tab which allows you to edit
  mail filters. Filters are saved in a new core store, and a new
  stock component (ScenarioEditor) renders the editor. The editor
  takes a set of templates that define a value space, and outputs
  a valid set of values.

- A new MailFilterProcessor takes messages and creates tasks to
  apply the actions from the MailFiltersStore.

- The worker-sync package now uses the MailFilterProcessor to
  apply filters /before/ it calls didPassivelyReceiveNewModels,
  so filtrs are applied before any notifications are created.

- A new task, ReprocessMailFiltersTask allows you to run filters
  on all of your existing mail. It leverages the existing TaskQueue
  architecture to: a) resume where it left off if you quit midway,
  b) be queryable (for status) from all windows and c) cancelable.
  The TaskQueue is a bit strange because it runs performLocal and
  performRemote very differently, and I had to use `performRemote`.
  (todo refactor soon.)

This diff also changes the EditableList a bit to behave like a
controlled component and render focused / unfocused states.

Test Plan: Run tests, only for actual filter processing atm.

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2379
2015-12-23 02:19:32 -05:00
Juan Tejada e9eb530994 fix(observables): Fix QuerySubscription to check for clientId's in result set
- See TODO comments
- Fixes #680
- Fixes #681
2015-12-22 13:42:25 -08:00
Evan Morikawa ecc1d099d9 fix(spec): fix send-draft spec to test for include 2015-12-22 10:36:25 -08:00
Juan Tejada c6a7659528 fix(send-draft): Include body when sending message in new send draft
logic
2015-12-22 10:06:58 -08:00
Juan Tejada 64ae82a7e2 fix(prefs): Prevent main key commands from being fired to thread list while on prefs page
Summary:
- When the preferences sheet is open, any commands triggered through key presses were being received by the thread-list, producing unexpected
(and unseen) results
- This is a partial/temporary solution and should go away when we do the Keymap/Commands/Menu refactor

Test Plan: - Manaul

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2380
2015-12-22 09:38:56 -08:00
Juan Tejada 24c80b7539 🍒(atom): Pull updated version of Command Registry:
- This fixes a bug present in the earlier version where stopPropagation and
preventDefault were not correctly defined in the custom event
- Updates clear-cut dependency and initialization of CommandRegistry in
NylasEnv
2015-12-21 20:31:54 -08:00
Evan Morikawa d18642fb3e refactor(contenteditable): new ContenteditableExtension API
Summary:
This provides a new API for `ContenteditableExtension`s. Instead of
manually manipulating the raw DOM and `Selection` objects, there's a new
`Editor` interface that encapsulates it and provides helper methods.

You can now do:

      editor.select(someNode).createLink("foo").collapseToEnd()

Now raw methods like `execCommand` ONLY show up in the `Editor` interface
as well as most of the raw `Selection` APIs.

There are also more integration tests :)

Another major goal was cleaning up the contenteditable file itself. To
that end:

1. The DOMNormalizer got pulled out into its own extension
1. The TabManager is now its own extension
1. Url wrangling got moved into the FloatingToolbar control
1. There is now the concept of a `ContenteditableService`, which are
tightly-couple blocks of code separated out into logical units. These are
dependent on the core state, innerState, and props and are not full
extensions.
1. `MouseService` now handles all the click event logic
1. `ClipboardService` was modified to the new service architecture

Test Plan: script/grunt run-integration-tests

Reviewers: drew, juan, bengotow

Reviewed By: juan, bengotow

Differential Revision: https://phab.nylas.com/D2367
2015-12-21 19:58:01 -08:00
Evan Morikawa c2f47ce951 fix(draft): New Send Draft logic
Summary:
This is a WIP for the new send draft logic.

I'll add tests then update the diff

Test Plan: todo

Reviewers: bengotow, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D2341
2015-12-21 11:50:52 -08:00
Sumukh Sridhara 1a8c87b10d Names with @ are included in the contact name. Resolves #713 2015-12-21 03:31:37 -08:00
Juan Tejada faf86631aa update(tray): Show 'Open Inbox' tray menu option and option to disable
tray  on Mac and Linux

- Resolves #673
- Resolves #762
- Resolves #594
2015-12-20 21:32:59 -08:00
Juan Tejada 101831b71e fix(feedback-window): Close correctly when in fullscreen mode
- Now shows main window when feedback window is closed/hidden
- Fixes #615
2015-12-20 13:11:58 -08:00
Juan Tejada d5e9397879 fix(typo): Fix typo in floating toolbar container 2015-12-18 14:10:53 -08:00