Commit graph

20 commits

Author SHA1 Message Date
Jackie Luo 4cabab5d2a fix(composer-emoji): Fix calculation for category positioning 2016-04-12 14:51:56 -07:00
Ben Gotow d159e1037d fix(emoji): Improve variable names / diff feedback 2016-04-12 14:46:03 -07:00
Ben Gotow 8613921a55 fix(emoji): Re-use img tag to avoid running out of file descriptors
Summary:
On my machine the new emoji picker was causing "too many open file descriptor"
errors. I think that this was because it was creating 1300 image tags in 50msec.

I refactored this code so that it uses a single image tag and only loads one image
at a time. This could make it slower on some people's machines, but eliminates the
possibility of it breaking the app!

Test Plan: Run tests

Reviewers: jackie

Differential Revision: https://phab.nylas.com/D2878
2016-04-12 14:29:59 -07:00
Jackie Luo 1039ad2c34 fix(composer-emoji): Switch to characters to PNGs (#1898)
* Add PNGs and JSON file

* Add Apple and Twitter emoji

* Fix linter issues and tests

* Get correct path from EmojiStore

* Add emoji regex and update extensions

* Remove the scary regex
2016-04-12 10:27:24 -07:00
Jackie Luo 2dbd1a0914 fix(composer-emoji): Fix tabs to scroll correctly 2016-04-06 12:06:27 -07:00
Ben Gotow f1c0a1615d fix(focus): Remove focusedField in favor of imperative focus, break apart ComposerView
Summary:
- Removes controlled focus in the composer!
  - No React components ever perfom focus in lifecycle methods. Never again.
  - A new `Utils.schedule({action, after, timeout})` helper makes it easy to say "setState or load draft, etc. and then focus"
  - The DraftStore issues a focusDraft action after creating a draft, which causes the MessageList to focus and scroll to the desired composer, which itself decides which field to focus.
  - The MessageList never focuses anything automatically.
- Refactors ComposerView apart — ComposerHeader handles all top fields, DraftSessionContainer handles draft session initialization and exposes props to ComposerView
  - ComposerHeader now uses a KeyCommandRegion (with focusIn and focusOut) to do the expanding and collapsing of the participants fields. May rename that container very soon.
- Removes all CommandRegistry handling of tab and shift-tab. Unless you preventDefault, the browser does it's thing.
- Removes all tabIndexes greater than 1. This is an anti-pattern—assigning everything a tabIndex of 0 tells the browser to move between them based on their order in the DOM, and is almost always what you want.
- Adds "TabGroupRegion" which allows you to create a tab/shift-tabbing group, (so tabbing does not leave the active composer). Can't believe this isn't a browser feature.

Todos:
- Occasionally, clicking out of the composer contenteditable requires two clicks. This is because atomicEdit is restoring selection within the contenteditable and breaking blur.
- Because the ComposerView does not render until it has a draft, we're back to it being white in popout composers for a brief moment. We will fix this another way - all the "return unless draft" statements were untenable.
- Clicking a row in the thread list no longer shifts focus to the message list and focuses the last draft. This will be restored soon.

Test Plan: Broken

Reviewers: juan, evan

Reviewed By: juan, evan

Differential Revision: https://phab.nylas.com/D2814
2016-04-04 15:22:01 -07:00
Jackie Luo 3cf2570561 fix(composer-emoji): Replace images with Unicode characters properly 2016-04-04 11:03:52 -07:00
Jackie Luo 280e77c796 spec(composer-emoji): Fix specs for popover 2016-03-31 18:14:11 -07:00
Juan Tejada 74a65bb9c1 fix(build): FIx linting and react errors and popover spec 2016-03-31 16:10:09 -07:00
Jackie Luo 06feced278 spec(composer-emoji): Add tests for emoji popover
Summary: Adds tests to check that emoji popover is inserting emoji correctly and adding PNGs as expected.

Test Plan: Tested locally.

Reviewers: evan, bengotow, juan

Reviewed By: juan

Subscribers: juan

Differential Revision: https://phab.nylas.com/D2810
2016-03-31 14:54:46 -07:00
Jackie Luo ff08f73f31 🎨(scroll): Fix UI issues in theme picker/emoji picker 2016-03-30 15:52:51 -07:00
Ben Gotow 886328ff7a bump(react): 0.13.2 => 0.14.7
Great breakdown of React changes here:
https://github.com/facebook/react/blob/master/CHANGELOG.md#0140-october-7-2015

Due to deprecation warnings, I don't think this will break third-party extensions unless they were doing really bad things.
2016-03-29 01:43:12 -07:00
Jackie Luo 83aebd99d1 fix(composer-emoji): Render emoji characters on Windows/Linux 2016-03-28 16:18:41 -07:00
Jackie Luo 457e068188 fix(composer-emoji): Only show replacement PNGs for OS X 2016-03-25 13:35:32 -07:00
Jackie Luo cff427d710 fix(composer-emoji): Return if no search results are found 2016-03-24 11:57:49 -07:00
Jackie Luo dcb8478f97 feat(composer-emoji): Add emoji button to composer
Summary: The emoji picker allows users to insert emoji to their messages on click. A few emoji that don't render properly in Chromium are replaced with PNGs, both in the composer view and the message list view, but only the Unicode characters are sent in the message bodies.

Test Plan: TODO

Reviewers: bengotow, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2787
2016-03-24 10:45:48 -07:00
Jackie Luo be9c616840 fix(composer-emoji): Return null if no matching node is found 2016-03-23 17:01:14 -07:00
Jackie Luo a8e5d9948e fix(composer-emoji): Fix setBaseAndExtent bug 2016-03-23 16:48:35 -07:00
Jackie Luo 2575cecd59 bump(node-emoji): Use 1.2.1 with merged PR 2016-03-18 10:07:56 -07:00
Jackie Luo 55ed1e2f3c sp(composer-emoji): Correct emojis to emoji 2016-03-15 13:37:54 -07:00