Browse Source

Merge pull request #74 from react-native-community/last-fixes-before-release

Last Fixes before release
Thibault Malbranche 6 years ago
parent
commit
02aa6e78cf
No account linked to committer's email address

+ 27
- 25
README.md View File

2
 
2
 
3
 **React Native WebView** is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
3
 **React Native WebView** is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
4
 
4
 
5
-**Please note that this package is pre-release and not yet ready for production use.**
6
-
7
 ## Platforms Supported
5
 ## Platforms Supported
8
 
6
 
9
-* [x] iOS (both UIWebView and WKWebView)
10
-* [x] Android
11
-* [ ] Windows 10 (coming soon)
7
+- [x] iOS (both UIWebView and WKWebView)
8
+- [x] Android
9
+- [ ] Windows 10 (coming soon)
12
 
10
 
13
-## Getting Started
11
+## Versionning
12
+
13
+If you need the exact same Webview as the one from react-native, please use version **2.0.0**.
14
 
14
 
15
-*Note: this is currently a work-in-progress and not yet published to NPM.*
15
+_This package will then follow semver rules for the next releases._
16
+
17
+## Getting Started
16
 
18
 
17
 ```
19
 ```
18
-$ npm install --save https://github.com/react-native-community/react-native-webview
20
+$ yarn add react-native-webview
19
 $ react-native link react-native-webview
21
 $ react-native link react-native-webview
20
 ```
22
 ```
21
 
23
 
26
 Import the `WebView` component from `react-native-webview` and use it like so:
28
 Import the `WebView` component from `react-native-webview` and use it like so:
27
 
29
 
28
 ```jsx
30
 ```jsx
29
-import React, { Component } from 'react'
30
-import { StyleSheet, Text, View } from 'react-native'
31
-import { WebView } from 'react-native-webview'
31
+import React, { Component } from 'react';
32
+import { StyleSheet, Text, View } from 'react-native';
33
+import { WebView } from 'react-native-webview';
32
 
34
 
33
 // ...
35
 // ...
34
 class MyWebComponent extends Component {
36
 class MyWebComponent extends Component {
35
-  render () {
37
+  render() {
36
     return (
38
     return (
37
       <WebView
39
       <WebView
38
-        source={{uri: "https://infinite.red/react-native"}}
39
-        style={{marginTop: 20}}
40
+        source={{ uri: 'https://infinite.red/react-native' }}
41
+        style={{ marginTop: 20 }}
40
       />
42
       />
41
-    )
43
+    );
42
   }
44
   }
43
 }
45
 }
44
 ```
46
 ```
51
 
53
 
52
 ### Contributor Notes
54
 ### Contributor Notes
53
 
55
 
54
-* I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
55
-* UIWebView is not tested fully and you will encounter some yellow warning boxes. Since it is deprecated, we don't intend to put a lot of time into supporting it, but feel free to submit PRs if you have a special use case. Note that you will need to specify `useWebKit={false}` to use UIWebView
56
-* After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
57
-  * `yarn flow` or `npm run flow` for iOS
58
-  * `yarn flow-android` or `npm run flow-android` for Android
59
-* If you want to add another React Native platform to this repository, you will need to create another `.flowconfig` for it. If your platform is `example`, copy the main flowconfig and rename it to `.flowconfig.example`. Then edit the config to ignore other platforms, and add `.*/*[.]example.js` to the ignore lists of the other platforms. Then add an entry to `package.json` like this:
60
-  * `    "flow-example": "flow check --flowconfig-name .flowconfig.example"`
61
-* Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
56
+- I've removed all PropTypes for now. Instead, we'll be using Flow types. TypeScript types will be added at a later date.
57
+- UIWebView is not tested fully and you will encounter some yellow warning boxes. Since it is deprecated, we don't intend to put a lot of time into supporting it, but feel free to submit PRs if you have a special use case. Note that you will need to specify `useWebKit={false}` to use UIWebView
58
+- After pulling this repo and installing all dependencies, you can run flow on iOS and Android-specific files using the commands:
59
+  - `yarn flow` or `npm run flow` for iOS
60
+  - `yarn flow-android` or `npm run flow-android` for Android
61
+- If you want to add another React Native platform to this repository, you will need to create another `.flowconfig` for it. If your platform is `example`, copy the main flowconfig and rename it to `.flowconfig.example`. Then edit the config to ignore other platforms, and add `.*/*[.]example.js` to the ignore lists of the other platforms. Then add an entry to `package.json` like this:
62
+  - `"flow-example": "flow check --flowconfig-name .flowconfig.example"`
63
+- Currently you need to install React Native 0.57 to be able to test these types - `flow check` will not pass against 0.56.
62
 
64
 
63
 ## Maintainers
65
 ## Maintainers
64
 
66
 
65
-* [Jamon Holmgren](https://github.com/jamonholmgren) ([Twitter @jamonholmgren](https://twitter.com/jamonholmgren)) from [Infinite Red](https://infinite.red/react-native)
66
-* [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
67
+- [Jamon Holmgren](https://github.com/jamonholmgren) ([Twitter @jamonholmgren](https://twitter.com/jamonholmgren)) from [Infinite Red](https://infinite.red/react-native)
68
+- [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
67
 
69
 
68
 ## License
70
 ## License
69
 
71
 

+ 1
- 1
android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java View File

518
         }
518
         }
519
         if (source.hasKey("method")) {
519
         if (source.hasKey("method")) {
520
           String method = source.getString("method");
520
           String method = source.getString("method");
521
-          if (method.equals(HTTP_METHOD_POST)) {
521
+          if (method.equalsIgnoreCase(HTTP_METHOD_POST)) {
522
             byte[] postData = null;
522
             byte[] postData = null;
523
             if (source.hasKey("body")) {
523
             if (source.hasKey("body")) {
524
               String body = source.getString("body");
524
               String body = source.getString("body");

+ 7
- 8
js/WebView.ios.js View File

8
  * @flow
8
  * @flow
9
  */
9
  */
10
 
10
 
11
-'use strict';
12
-
13
 import React from 'react';
11
 import React from 'react';
14
-
15
-import ReactNative from 'react-native'
16
 import {
12
 import {
17
   ActivityIndicator,
13
   ActivityIndicator,
18
   Linking,
14
   Linking,
22
   View,
18
   View,
23
   requireNativeComponent,
19
   requireNativeComponent,
24
   NativeModules,
20
   NativeModules,
25
-  Image
21
+  Image,
22
+  findNodeHandle,
26
 } from 'react-native';
23
 } from 'react-native';
27
 
24
 
28
 import invariant from 'fbjs/lib/invariant';
25
 import invariant from 'fbjs/lib/invariant';
136
   };
133
   };
137
 
134
 
138
   state = {
135
   state = {
139
-    viewState: this.props.startInLoadingState ? WebViewState.LOADING : WebViewState.IDLE,
136
+    viewState: this.props.startInLoadingState
137
+      ? WebViewState.LOADING
138
+      : WebViewState.IDLE,
140
     lastErrorEvent: null,
139
     lastErrorEvent: null,
141
   };
140
   };
142
 
141
 
203
       'about:blank',
202
       'about:blank',
204
       ...(this.props.originWhitelist || []),
203
       ...(this.props.originWhitelist || []),
205
     ].map(WebViewShared.originWhitelistToRegex);
204
     ].map(WebViewShared.originWhitelistToRegex);
206
-    const onShouldStartLoadWithRequest = (event) => {
205
+    const onShouldStartLoadWithRequest = event => {
207
       let shouldStart = true;
206
       let shouldStart = true;
208
       const { url } = event.nativeEvent;
207
       const { url } = event.nativeEvent;
209
       const origin = WebViewShared.extractOrigin(url);
208
       const origin = WebViewShared.extractOrigin(url);
384
    * Returns the native `WebView` node.
383
    * Returns the native `WebView` node.
385
    */
384
    */
386
   getWebViewHandle = () => {
385
   getWebViewHandle = () => {
387
-    return ReactNative.findNodeHandle(this.webViewRef.current);
386
+    return findNodeHandle(this.webViewRef.current);
388
   };
387
   };
389
 
388
 
390
   _onLoadingStart = (event: WebViewNavigationEvent) => {
389
   _onLoadingStart = (event: WebViewNavigationEvent) => {

+ 2
- 2
js/WebViewShared.js View File

14
 
14
 
15
 const WebViewShared = {
15
 const WebViewShared = {
16
   defaultOriginWhitelist: ['http://*', 'https://*'],
16
   defaultOriginWhitelist: ['http://*', 'https://*'],
17
-  extractOrigin: (url: string) => {
17
+  extractOrigin: (url: string): string => {
18
     const result = /^[A-Za-z0-9]+:(\/\/)?[^/]*/.exec(url);
18
     const result = /^[A-Za-z0-9]+:(\/\/)?[^/]*/.exec(url);
19
     return result === null ? '' : result[0];
19
     return result === null ? '' : result[0];
20
   },
20
   },
21
-  originWhitelistToRegex: (originWhitelist: string) => {
21
+  originWhitelistToRegex: (originWhitelist: string): string => {
22
     return escapeStringRegexp(originWhitelist).replace(/\\\*/g, '.*');
22
     return escapeStringRegexp(originWhitelist).replace(/\\\*/g, '.*');
23
   },
23
   },
24
 };
24
 };

+ 5
- 2
package.json View File

1
 {
1
 {
2
   "name": "react-native-webview",
2
   "name": "react-native-webview",
3
-  "description": "React Native WebView component for iOS, Android, and Windows 10",
3
+  "description": "React Native WebView component for iOS, Android, and Windows 10 (coming soon)",
4
   "main": "index.js",
4
   "main": "index.js",
5
   "author": "Jamon Holmgren <jamon@infinite.red>",
5
   "author": "Jamon Holmgren <jamon@infinite.red>",
6
-  "version": "0.1.0",
6
+  "contributors": [
7
+    "Thibault Malbranche <malbranche.thibault@gmail.com>"
8
+  ],
9
+  "version": "2.0.0",
7
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
10
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
8
   "scripts": {
11
   "scripts": {
9
     "flow": "flow check",
12
     "flow": "flow check",