Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 79381eb

Browse files
committed
allow no opts to decorator
1 parent 3f29e9d commit 79381eb

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

CodePush.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -402,26 +402,26 @@ async function syncInternal(options = {}, syncStatusChangeCallback, downloadProg
402402
let CodePush;
403403

404404
function codePushify(options = {}) {
405-
return (RootComponent) => {
406-
let React;
407-
let ReactNative = require("react-native");
405+
let React;
406+
let ReactNative = require("react-native");
408407

409-
try { React = require("react"); } catch (e) { }
408+
try { React = require("react"); } catch (e) { }
409+
if (!React) {
410+
try { React = ReactNative.React; } catch (e) { }
410411
if (!React) {
411-
try { React = ReactNative.React; } catch (e) { }
412-
if (!React) {
413-
throw new Error("Unable to find the 'React' module.");
414-
}
412+
throw new Error("Unable to find the 'React' module.");
415413
}
414+
}
416415

417-
if (!React.Component) {
418-
throw new Error(
416+
if (!React.Component) {
417+
throw new Error(
419418
`Unable to find the "Component" class, please either:
420419
1. Upgrade to a newer version of React Native that supports it, or
421420
2. Call the codePush.sync API in your component instead of using the @codePush decorator`
422-
);
423-
}
421+
);
422+
}
424423

424+
var decorator = (RootComponent) => {
425425
return class CodePushComponent extends React.Component {
426426
componentDidMount() {
427427
if (options.checkFrequency === CodePush.CheckFrequency.MANUAL) {
@@ -444,6 +444,12 @@ function codePushify(options = {}) {
444444
}
445445
}
446446
}
447+
448+
if (typeof options === "function") {
449+
return decorator(options);
450+
} else {
451+
return decorator;
452+
}
447453
}
448454

449455
// If the "NativeCodePush" variable isn't defined, then

README.md

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,11 @@ In order to accommodate as many developer preferences as possible, the CodePush
102102
```
103103
react-native link react-native-code-push
104104
```
105-
105+
106106
If your app uses a version of React Native that is lower than v0.27, run the following:
107107
```
108108
rnpm link react-native-code-push
109-
```
109+
```
110110
111111
*Note: If you don't already have RNPM installed, you can do so by simply running `npm i -g rnpm` and then executing the above command. If you already have RNPM installed, make sure you have v1.9.0+ in order to benefit from this one step install.*
112112
@@ -220,14 +220,14 @@ In order to accommodate as many developer preferences as possible, the CodePush
220220
```
221221
react-native link react-native-code-push
222222
```
223-
223+
224224
If your app uses a version of React Native that is lower than v0.27, run the following:
225225
```
226226
rnpm link react-native-code-push
227-
```
228-
227+
```
228+
229229
*Note: If you don't already have RNPM installed, you can do so by simply running `npm i -g rnpm` and then executing the above command.*
230-
230+
231231
2. If you're using RNPM >=1.6.0, you will be prompted for the deployment key you'd like to use. If you don't already have it, you can retreive this value by running `code-push deployment ls <appName> -k`, or you can choose to ignore it (by simply hitting `<ENTER>`) and add it in later. To get started, we would recommend just using your `Staging` deployment key, so that you can test out the CodePush end-to-end.
232232
233233
3. (Only needed in v1.8.0+ of the plugin) In your `android/app/build.gradle` file, add the `codepush.gradle` file as an additional build task definition underneath `react.gradle`:
@@ -426,13 +426,11 @@ The simplest way to do this is to "CodePush-ify" your app's root component. To d
426426

427427
```javascript
428428
import codePush from "react-native-code-push";
429-
430-
let codePushOptions;
431-
429+
432430
class MyApp extends Component {
433431
}
434-
435-
MyApp = codePush(codePushOptions)(MyApp);
432+
433+
MyApp = codePush(MyApp);
436434
```
437435

438436
* **Option 2: Use the [ES7 decorator](https://github.com/wycats/javascript-decorators) syntax:**
@@ -442,9 +440,7 @@ The simplest way to do this is to "CodePush-ify" your app's root component. To d
442440
```javascript
443441
import codePush from "react-native-code-push";
444442
445-
let codePushOptions;
446-
447-
@codePush(codePushOptions)
443+
@codePush
448444
class MyApp extends Component {
449445
}
450446
```
@@ -724,6 +720,7 @@ When you require `react-native-code-push`, the module object provides the follow
724720
#### codePush
725721
726722
```javascript
723+
codePush(rootComponent: React.Component): React.Component;
727724
codePush(options: CodePushOptions)(rootComponent: React.Component): React.Component;
728725
```
729726
@@ -737,7 +734,7 @@ This decorator provides support for letting you customize its behaviour to easil
737734
// Fully silent update which keeps the app in
738735
// sync with the server, without ever
739736
// interrupting the end user
740-
@codePush()
737+
@codePush
741738
class MyApp extends Component {}
742739
```
743740
@@ -764,7 +761,7 @@ This decorator provides support for letting you customize its behaviour to easil
764761
```javascript
765762
// Make use of the event hooks to keep track of
766763
// the different stages of the sync process.
767-
@codePush()
764+
@codePush
768765
class MyApp extends Component {
769766
codePushStatusDidChange(status) {
770767
switch(syncStatus) {

0 commit comments

Comments
 (0)