Commit Graph

7989 Commits

Author SHA1 Message Date
Aaron Chiu cc30d2f46d break down production startup with more markers
Reviewed By: lexs

Differential Revision: D3835031

fbshipit-source-id: e85c6322d11c6c7cd38b2432e7ab623ecc5908ed
2016-09-09 03:28:51 -07:00
Go7hic cb4da12ee8 fix 'Integrating with Existing Apps guide ' url
Summary:
Thanks for submitting a pull request! Please provide enough information so that others can review your pull request:

> **Unless you are a React Native release maintainer and cherry-picking an *existing* commit into a current release, ensure your pull request is targeting the `master` React Native branch.**

Explain the **motivation** for making this change. What existing problem does the pull request solve?

Prefer **small pull requests**. These are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it.

**Test plan (required)**

Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI.

Make sure tests pass on both Travis and Circle CI.

**Code formatting**

Look around. Match the style of the rest of the codebase. See also the simple [style guide](https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#style-guide).

For more info, see
Closes https://github.com/facebook/react-native/pull/9539

Differential Revision: D3840413

Pulled By: hramos

fbshipit-source-id: 9161020f63c6099343fda54de7cb94025d0e461e
2016-09-08 22:13:42 -07:00
Jacob Parker 9e6e573e19 NavigatorIOS System Icon Support
Summary:
Continuation on #3959 (started by cancan101). Rebased to latest master, adds support for left system icon, fixes issues mentioned in previous PR.

<img width="432" alt="screen shot 2016-09-05 at 13 54 41" src="https://cloud.githubusercontent.com/assets/7275322/18248478/5b7aa25c-7370-11e6-8c51-01a2b7fd1030.png">
Closes https://github.com/facebook/react-native/pull/9742

Differential Revision: D3836850

Pulled By: javache

fbshipit-source-id: ef9f6e42211ed18bf5f3dc1eb7a8b1318d939674
2016-09-08 17:58:50 -07:00
Andrew Grewell 7b18b2c409 check if this._navBar has immediatelyRefresh method
Summary:
`Navigator` throws an error if using a custom `NavigationBar` component that does not have a `immediatelyRefresh` method present.
Closes https://github.com/facebook/react-native/pull/9438

Differential Revision: D3838928

Pulled By: mkonicek

fbshipit-source-id: 74d62ef09e179f457a4b14f8537dfaf0d4697322
2016-09-08 17:28:57 -07:00
Dmitry Petukhov 6b42d5c952 Updating Websocket readyState in case of websocketFailed event
Summary:
Fix for https://github.com/facebook/react-native/issues/9465

We are building a react-native based application which extensively uses WebSockets. The Android app crashes right after waking up being in suspended mode for a coupe of days and throws an exception:

"Cannot send a message. Unknown WebSocket id 1"

Before calling WebSocket.send(...) method from WebSocket.js we always check its readyState. I believe the problem is caused by not updating readyState if case of 'websocketFailed' event. this.close() cause the current used websocket ID to be removed from mWebSocketConnections HashMap (WebSocketModule.java), but readyState stays the same.
Closes https://github.com/facebook/react-native/pull/9487

Differential Revision: D3838675

Pulled By: mkonicek

fbshipit-source-id: e833cef9f1b94c6f7236077241cacf5a56f5824b
2016-09-08 17:13:45 -07:00
Ron Heft b0c13ebe02 Allow PhotoKit to download photos from iCloud
Summary:
Resolves #7081 by allowing iCloud to download photos not stored on the device.

**Test plan (required)**

1. Verified existing photos stored on the device still display.
2. Deleted my iCloud photo library from my phone and verified the image downloads and displays.
Closes https://github.com/facebook/react-native/pull/9530

Differential Revision: D3838470

Pulled By: mkonicek

fbshipit-source-id: 810830a4246714b6e166e4411f3fa848b1f1b71c
2016-09-08 16:28:35 -07:00
Alex Kotliarskyi 7398780357 Exit with error code 11 when port is taken
Reviewed By: javache

Differential Revision: D3831703

fbshipit-source-id: ef92cacbc9178b7b661b3a9731dffb97cfc66b7a
2016-09-08 15:58:55 -07:00
Alex Kotliarskyi f1c158e534 Guard against possible race conditions in RCTAllocationTests
Reviewed By: javache

Differential Revision: D3829341

fbshipit-source-id: 2a3fd66a7b1494176726a79ef28cef5158d8ad58
2016-09-08 15:13:35 -07:00
Aaron Chiu e70d1dba58 Use the c.f.react.bridge.ReactMarker
Reviewed By: andreicoman11

Differential Revision: D3834955

fbshipit-source-id: 027150d3829e8a15f28ea76877e4ab5a29ea50cf
2016-09-08 09:13:40 -07:00
aleclarsoniv 29febb9b1e Fix typo in new ModuleCache args
Summary:
👍
Closes https://github.com/facebook/react-native/pull/9774

Differential Revision: D3835002

Pulled By: mkonicek

fbshipit-source-id: a94f07a7f32fe709f0a7bed561f26d1d9c5ac377
2016-09-08 07:43:52 -07:00
James Ide ad24bcf7cc Remove guard that we used in iOS 7 to avoid a JS crash
Summary:
JSC on iOS 8 and above includes TypedArrays so there's no need for the guard statement anymore since React Native officially does not support iOS 7 moving forward.
Closes https://github.com/facebook/react-native/pull/9780

Differential Revision: D3834979

Pulled By: mkonicek

fbshipit-source-id: 6e28a47702d6e3d604fedb9d2d00fe1c539a6926
2016-09-08 07:43:52 -07:00
Alexey Lang 532751f8a8 Start measuring RCTPLBridgeStartup and RCTPLTTI early
Reviewed By: javache

Differential Revision: D3828404

fbshipit-source-id: 7cbfa2eeb60e249be8aad09da5314be998213f0e
2016-09-08 07:28:41 -07:00
Héctor Ramos c3b4136d93 New Post: Unraveling Navigation
Summary:
Lets highlight interesting videos on React Native from community events as well as Facebook events. First up, skevy's talk on mobile navigation.

![screencapture-localhost-8079-react-native-blog-1473287447105](https://cloud.githubusercontent.com/assets/165856/18330912/3ed2b4cc-7510-11e6-92df-c0806765bd61.png)
Closes https://github.com/facebook/react-native/pull/9800

Differential Revision: D3834923

Pulled By: mkonicek

fbshipit-source-id: 4c7a4ec8b0ff329fd7c530925021b274987df9b5
2016-09-08 06:59:00 -07:00
Tobias Ritzau 3eb4bae138 Disables munging in animated to make dynamic dispatch work for private methods
Reviewed By: javache

Differential Revision: D3828458

fbshipit-source-id: 0170b199e4dc33df1d836de7475900dd95c4d2e7
2016-09-08 05:44:08 -07:00
Tobias Ritzau 3ff4ee961c Fix bad type specification in animated
Reviewed By: javache

Differential Revision: D3828502

fbshipit-source-id: 8270b00053d25f72d50f79f895ea77981e3000bb
2016-09-08 04:43:28 -07:00
Pieter De Baets 99e0267c25 Cleanup and document native module configuration
Summary: Get rid of the old behaviour of JSON encoding in `nativeRequireModuleConfig` and consistently use the same names for function types "async/promise/sync"

Reviewed By: lexs

Differential Revision: D3819348

fbshipit-source-id: fc798a5abcaf6a3ef9d95bd8654afa7825c83967
2016-09-08 04:13:51 -07:00
Adam Comella 28ba749ba0 Android: Add support for having borders on <Text> & <TextInput> components
Summary:
Currently, `<Text>` and `<TextInput>` components on Android do not support borders.
This change adds support for the borderRadius, borderColor, and
borderWidth props on the `<Text>` and `<TextInput>` components on Android.

ReactViewGroup already implements this functionality so
we copied its implementation over into the ReactTextView
and ReactEditText classes.

**Test plan (required)**

Verified that the various border props work on Text and TextInput components in a test app.

Adam Comella
Microsoft Corp.
Closes https://github.com/facebook/react-native/pull/9658

Differential Revision: D3819993

Pulled By: lexs

fbshipit-source-id: 183b0aa95369dd781f03b5a1f0f409ab47284e39
2016-09-08 02:58:35 -07:00
Ben Roth afde9da93d Scope RCTReloadNotification to one bridge
Summary:
At the moment, posting RCTReloadNotification in any circumstance causes all RCTBridge instances to reload. This change scopes the notification to the bridge for which it was intended.
Closes https://github.com/facebook/react-native/pull/8762

Differential Revision: D3831914

fbshipit-source-id: ff29574f574ecd1a403057ddd0458dea38f0136e
2016-09-07 17:28:47 -07:00
Anton Kuznetsov efd8b10135 Brings accessibilityLabel into PickerAndroid
Summary:
Hi!

I found problem with accessibilityLabel on PickerAndroid.
There's no value in content-desc attribute while accessibilityLabel is correct.
I found that accessibilityLabel is not propagated into native components via
native props.

This PR brings accessibilityLabel for PickerAndroid.

Without this solution my appium tests fails, for example:

My code:
```jsx
<Picker
    style={this.props.style}
    selectedValue={this.props.value}
    onValueChange={this.onChange}
    disabled={this.props.disabled}
    accessibilityLabel="select_wineType">
    // Chilren
</Picker>
```

```sh
✖  Error: element (~select_wineType) still not visible after 5000ms
```
Because xml of this view is (look into content-desc of Spinner):
```xml
<android.widget.Spinner index="0" text="" class="android.widget.Spinner" package="com.hello_github" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="true" long-clickable="false" password=
Closes https://github.com/facebook/react-native/pull/8873

Differential Revision: D3831691

Pulled By: spicyj

fbshipit-source-id: a494f22cb8be8cd6964981fe7ef7d9ff3773bcce
2016-09-07 16:58:30 -07:00
Alexey Lang a31a2910a1 Make bridge logger thread-safe and fix noisy in bridge core time
Reviewed By: javache

Differential Revision: D3828301

fbshipit-source-id: 29efdef2fb2c601984c27c4d0a69e1542bbff385
2016-09-07 13:10:12 -07:00
Andrew Y. Chen bbd1e455f3 Show a redbox when scripts fail to load
Reviewed By: yungsters

Differential Revision: D3670186

fbshipit-source-id: 1c61b69c74a8f7cc255aa6d7afcdb117205922eb
2016-09-07 13:10:12 -07:00
Héctor Ramos e22abd91bf Add support for video embeds in blog posts.
Summary:
Similar to the Hero image functionality. If a video URL is present in the post metadata, it will be displayed instead of a Hero image. This will be useful when highlighting videos in blog posts.

Renamed ReadMoreLink into a more generic ExceptLink which will display "Watch video" when the blog post category is "videos".

Currently there is no way of listing blog posts by categories, but it may be useful to do so later once we have a larger catalog of content.
Closes https://github.com/facebook/react-native/pull/9794

Differential Revision: D3828862

Pulled By: mkonicek

fbshipit-source-id: 1a88aab5edcdf7c84bb679263d6b97d52cf201a2
2016-09-07 13:10:12 -07:00
Andrei Coman 8aeeb4d6a0 Rename native event `timeStamp` to `timestamp`
Summary: It's called `timestamp` on iOS, making it consistent.

Reviewed By: foghina

Differential Revision: D3820937

fbshipit-source-id: 2805f1fc10d6445d8b31676e0e3dca348510ffe7
2016-09-07 13:10:12 -07:00
Felix Oghina 40baf6a5b9 Fix rounding resulting in choppy timing animations
Summary: Casting to long too early here and dropping some precision, resulting in skipped (not dropped) frames.

Reviewed By: sahrens

Differential Revision: D3819153

fbshipit-source-id: 83676cf4c9129638348890c74d563db121049e4a
2016-09-07 13:10:12 -07:00
Mehdi Mulani de3457f31d Allow <Modal /> to be presented in different orientations
Reviewed By: javache

Differential Revision: D3760002

fbshipit-source-id: 01f5c246fb0fc041ec2d63b4ef80de858fb6fdf2
2016-09-07 13:10:11 -07:00
Konstantin Raev a13e1c4e2c Reverted commit D3811226
Reviewed By: astreet

Differential Revision: D3811226

fbshipit-source-id: 8ade5ef6c34e117fb10a000034b9900f8a56087d
2016-09-07 13:10:11 -07:00
Spencer Ahrens 6fb149596a Use Batchinator in WindowedListView
Summary: Cleans things up and also defers rendering rows if there is an interaction happening.

Reviewed By: achen1

Differential Revision: D3817231

fbshipit-source-id: fd08d0ca7cb6c203178f27bfc5a0f55469135c3a
2016-09-06 22:43:27 -07:00
Spencer Ahrens 322c160fb1 Add some stall stuff as settings to native animated example
Reviewed By: fkgozali

Differential Revision: D3817885

fbshipit-source-id: 047f806411982aafdf7420eebadff063f56fee69
2016-09-06 19:58:35 -07:00
Michał Gregorczyk 2618ba2d60 Allow UnpackingJSBundleLoader's client to queue action to perform after unpacking
Reviewed By: tadeuzagallo

Differential Revision: D3735948

fbshipit-source-id: 5971a5367eb4b5a90e0f23b9279759e9f4060222
2016-09-06 19:44:27 -07:00
Michał Gregorczyk d3238569bf Evacuate part of optimized bundle logic from react code
Reviewed By: lexs

Differential Revision: D3735936

fbshipit-source-id: b38960a8f25be15ccce70296980d78c0a7fa8de5
2016-09-06 19:44:27 -07:00
Michał Gregorczyk 0c2fdf4b6a Add separate JSBunldeLoader for assets
Reviewed By: mhorowitz

Differential Revision: D3735897

fbshipit-source-id: 990d45e9cb40a9afce1df8f8fd0b73c62e13158a
2016-09-06 19:44:27 -07:00
Kevin Gozali 96de161304 enable RTL layout by default for all apps
Summary:
We're now enabling RTL layout by default assuming the app has the proper localized assets. Previously, this was disabled by default to minimize surprise. Apps that don't want this RTL support can still manually disable them by using `RCTI18nUtil.allowRTL(false)` (iOS) or `I18nUtil.allowRTL(false)` (android) in the apps start-up logic, as outlined in the blog post: http://facebook.github.io/react-native/blog/2016/08/19/right-to-left-support-for-react-native-apps.html

iOS Util function: f0fb228ec7/React/Modules/RCTI18nUtil.m (L53)
Android Util function: 380830e4aa/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nUtil.java (L63)

Differential Revision: D3825054

fbshipit-source-id: 88b355fef9e3847939a414f80d2285979e27af08
2016-09-06 17:58:47 -07:00
Janic Duplessis e26c135746 Add support for DiffClamp node
Summary:
Add native support on iOS and Android for `Animated.diffClamp` that was added in #9419.

**Test plan**
Tested that it works properly using the native animations UIExplorer example.
Closes https://github.com/facebook/react-native/pull/9691

Differential Revision: D3813440

fbshipit-source-id: 48a3ecddf3708fa44b408954d3d8133ec8537f21
2016-09-06 15:43:35 -07:00
Janic Duplessis 6d978c3c8b Add support for extrapolation
Summary:
Adds support for the `extrapolate` parameter on the native interpolation node. This is pretty much a 1 to 1 port of the JS implementation.

**Test plan**
Tested by adding the `extrapolate` parameter in the native animated UIExplorer example.
Closes https://github.com/facebook/react-native/pull/9366

Differential Revision: D3824154

fbshipit-source-id: 2ef593af827a8bd3d7b8ab2d53abbdc9516c6022
2016-09-06 15:28:38 -07:00
Spencer Ahrens fab0ff35f1 Introduce UIExplorerStatePersister and use for search filter
Reviewed By: fkgozali

Differential Revision: D3817864

fbshipit-source-id: 55ca7cc66b53714d881c0593d5441d2ad1e44207
2016-09-06 14:58:31 -07:00
Spencer Ahrens 5eaef1c631 Introduce Batchinator
Reviewed By: devknoll

Differential Revision: D3796349

fbshipit-source-id: 2e23a2361a612107596cf6381e67252238e970bf
2016-09-06 14:43:46 -07:00
Spencer Ahrens 2554f26387 Fix CameraRollExample crash
Reviewed By: fkgozali

Differential Revision: D3817912

fbshipit-source-id: f3c83675d06149a1e027b9ccd33d3c6cde234be3
2016-09-06 14:43:46 -07:00
Spencer Ahrens e2d84a8221 small cleanup in RTLExample
Reviewed By: fkgozali

Differential Revision: D3817896

fbshipit-source-id: c47f91f4b59e0d3964faa41ad6d7dbce61e7140a
2016-09-06 14:43:46 -07:00
Gabe Levi 85a6f011b6 Deploy v0.32.0
Reviewed By: jeffmo

Differential Revision: D3821852

fbshipit-source-id: 01fd16707cba860a830d682a2af2bdd542605abf
2016-09-06 13:43:47 -07:00
Andrew Y. Chen 300cb03e94 Remove ReactRootView's MeasureSpec assertion
Reviewed By: astreet

Differential Revision: D3811226

fbshipit-source-id: 611e5a2960928c19d93823616d68aa11a9786bf6
2016-09-06 12:43:49 -07:00
Ian MacLeod 4f89fa9cf3 registration error event
Summary:
This is an updated version of #2336 and #7694.

 ---

This adds a `registrationError` event that is emitted by `PushNotificationIOS` whenever an application receives a registration error from APNS (APNS service failure, running on simulator, etc).  This event fires to the exclusion of the `register` event (and vice versa).

**How to use**

Add the following to your `AppDelegate.m`:

```obj-c
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
  [RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
}
```

And register an event handler for the event:

```js
PushNotificationIOS.addEventListener('registrationError', function({ message, code }) {
  // Complete your registration process in error.
});
```

**Test plan**

Added support for this event (and `register`) to UIExplorer as a proof of concept.  Navigating to the push notifications example on a simulator is an easy way to reproduce this e
Closes https://github.com/facebook/react-native/pull/9650

Differential Revision: D3822142

Pulled By: javache

fbshipit-source-id: a15ed8941b74dc3eed2c44c658deccbcaf39ce3d
2016-09-06 11:13:40 -07:00
Andrei Coman dea6b0e24c Fix `requestDisallowInterceptTouchEvent` for nested react native views
Summary:
ReactRootView currently intercepts and swallows all
`requestDisallowInterceptTouchEvent` calls, which made sense when the
ReactNativeView was the root of all views. In the context of react native views
embedded in other views though, we want to propagate the call to all parents
views, but not set it on the ReactRootView itself (because we still need the
`onInterceptTouchEvent` calls to dispatch the touch events to JS).

Reviewed By: foghina

Differential Revision: D3819255

fbshipit-source-id: 21f2dd173c76e98342193de384292fef2b407250
2016-09-06 09:58:39 -07:00
Andrei Coman 372d001a5d Smart textinput scroll
Summary:
This diff changes the textinput component to only scroll (and interrupt parent
views from scrolling), when it is possible for the text inside the component to
be scrolled. Before (D3735237), we would intercept all touch events on the
textinput if it's focused. But this makes it: a.) impossible to scroll a scrollview from within
a textinput that cannot be scrolled; b.) different from iOS behavior.

What the component now does is intercept move touches, and check if it can
scroll in any direction. If it does, it will intercept the touches and stop the parent
component from scrolling; otherwise, it will give the control back to the parent
component.

Note: this might change in the future to also detect the direction of the scroll, and
only block the scroll if the component can scroll in that direction. This is however not
trivial, since the scroll needs to be above some threshold of pixels. Blocking the
parent view from scrolling until that threshold is passed might cause incorrect behavior
in the parent component.

Reviewed By: astreet

Differential Revision: D3764267

fbshipit-source-id: 47e7b5e03855b3c85789e04fc31a8317afbafa84
2016-09-06 09:58:39 -07:00
Pieter De Baets 3efe95d989 Fix images not reloading after memory warning
Reviewed By: mmmulani

Differential Revision: D3816779

fbshipit-source-id: edccb41a38fff3b2c143ffb3cbe0a7001ee16331
2016-09-06 09:28:35 -07:00
rh389 6e216d2034 Include CSSLayout.h consistently with other project includes
Summary:
Include CSSLayout headers in the same way as other project headers, ie `#import <CSSLayout/CSSLayout.h>` becomes `#import "CSSLayout.h"`. CSSLayout is not a framework or system dependency, so shouldn't (AFAIK) be included with angle brackets. Doing so breaks framework builds, such as when RN is used as a pod in a swift project.

In combination with https://github.com/facebook/css-layout/pull/217 this fixes https://github.com/facebook/react-native/issues/9014 (specifically swift cocoapods projects). There is then no need for a separate CSSLayout pod subspec.

Tests run on the RN project in isolation (with changes inside `CSSLayout` itself also applied) and against a dummy swift project with RN included as a pod.

NB: This effectively reverts https://github.com/facebook/react-native/pull/9015 and may break non-swift cocoapods projects unless https://github.com/facebook/css-layout/pull/217 is merged and synced first.

Update: As discussed with alloy and emilsjolander, wrap these imports in a preprocess
Closes https://github.com/facebook/react-native/pull/9544

Differential Revision: D3821791

Pulled By: javache

fbshipit-source-id: d27ac8be9ce560d03479b43d3db740cd196c24da
2016-09-06 09:13:39 -07:00
Eric Rozell 4647b62f4d fix(packager): support node-haste browser and react-native replacements on Windows
Summary:
Explain the **motivation** for making this change. What existing problem does the pull request solve?

Fix issue with browser and react-native module mappings in node-haste when running the packager from Windows.

**Test plan (required)**

Tested on the NPM package uuid, which has a browser mapping, and it worked.

Fixes #9570
Closes https://github.com/facebook/react-native/pull/9572

Differential Revision: D3821761

Pulled By: davidaurelio

fbshipit-source-id: ebbd91f9e3215385afe3b81a97a962b45a6286f9
2016-09-06 08:58:37 -07:00
Andrei Coman 8451585f38 Fix dimensions on orientation change
Summary:
This adds the `didUpdateDimensions` event that already exists on iOS, and
updates the internal native dimensions data that needs repopulation after
orientation change.

Reviewed By: foghina

Differential Revision: D3819364

fbshipit-source-id: fc2b3b4d1991d101e5de4439ccef2189bc65fd58
2016-09-06 08:43:39 -07:00
David Gröger 48ab5eb436 cli run-ios on device
Summary:
At the moment the run-ios command from the react-native cli does only work for simulators.
The pull request adds a new option to the existing command: **"--device 'device-name'" which installs and launches an iOS application on a connected device.**
This makes it easier to build a test environment using react-native for connected devices.

I've tested my code with the following commands:
react-native run-ios --device "Not existing device"
react-native run-ios --device
react-native run-ios --device "name-of-a-simulator"
react-native run-ios --device "name-of-connected-device"

Output of the first three commands:
![example_error_output](https://cloud.githubusercontent.com/assets/9102810/17669443/f53d5948-630d-11e6-9a80-7df2f352c6a3.png)

Additional to the manual command tests i've added a test file 'parseIOSDevicesList-test.js'.

I used **ios-deploy** In order to launch and install the .app-bundle on a connected device.
ios-deploy on github:
Closes https://github.com/facebook/react-native/pull/9414

Differential Revision: D3821638

Pulled By: javache

fbshipit-source-id: c07b7bf25283a966e45613a22ed3184bb1aac714
2016-09-06 08:13:41 -07:00
Andrei Coman 128b698a03 UIExplorer fixes
Summary:
Currently, when reloading uiexplorer, it does not go back to the last visited
component. This fixes it, by only storing the state (which contains the last
visited component), after it has been set.

Reviewed By: bestander

Differential Revision: D3821288

fbshipit-source-id: 5b9ba10765ce402c20016519a3b7f6b5211cc623
2016-09-06 06:43:37 -07:00
BaihaoTian d31756bf01 improve (RCTJSErrorFromCodeMessageAndNSError)
Summary:
First of all,please forgive my poor english. LOL

When I use Promises  as callBack,

 I followed the guide to make a (RCTPromiseRejectBlock),in this RCTPromiseRejectBlock,

from the guide I should add a (NSString)code a (NSString)message and an (NSError) to a  RCTPromiseRejectBlock.

As what did guide said I just make a NSError with

```
 NSError *error=[NSError errorWithDomain:@"native stroage error" code:402 userInfo:@{@"data":key}];

```

As you can see, I want to transfer some data in this callback.But I just found the (userInfo) of NSError didn't composed to a  RCTPromiseRejectBlock.

So I check out the source code of RCTUtil ,I found this

```

// TODO: Can we just replace RCTMakeError with this function instead?
NSDictionary<NSString *, id> *RCTJSErrorFromCodeMessageAndNSError(NSString *code,
                                                                  NSString *message,
                                                                  NSError *__nullable error)
{
  NSString *errorMessage;
Closes https://github.com/facebook/react-native/pull/9519

Differential Revision: D3821334

Pulled By: javache

fbshipit-source-id: 0fa40dd93932af70123b8f8a20a5c7dc5afdd6ac
2016-09-06 06:13:49 -07:00