Skip to content

Commit 57331dc

Browse files
committed
Upgrade to latest RN 56 and fix some bugs
1 parent 141e387 commit 57331dc

File tree

8 files changed

+166
-126
lines changed

8 files changed

+166
-126
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
yarn.lock
3+
package-lock.json

NodeCameraModule.js

Lines changed: 65 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,118 @@
1-
//
1+
//@flow
22
// NodeCameraModule.js
33
//
44
// Created by Mingliang Chen on 2017/11/29.
5+
// Upgraded by Anh Tuan Nguyen on 2018/08/06.
56
// Copyright © 2017年 NodeMedia. All rights reserved.
67
//
78

8-
import React, { Component } from 'react';
9-
import { PropTypes } from 'prop-types';
10-
import { requireNativeComponent, View, UIManager, findNodeHandle } from 'react-native';
11-
12-
9+
import React, { PureComponent } from "react"
10+
import {
11+
requireNativeComponent,
12+
UIManager,
13+
findNodeHandle,
14+
ViewPropTypes
15+
} from "react-native"
1316

14-
var RCT_VIDEO_REF = 'NodeCameraView';
17+
type Camera = {
18+
cameraId: 0 | 1,
19+
cameraFrontMirror: boolean
20+
}
21+
type Audio = {
22+
bitrate: number,
23+
profile: 0 | 1 | 2,
24+
samplerate: 8000 | 16000 | 32000 | 44100 | 48000
25+
}
26+
type Video = {
27+
preset: number,
28+
bitrate: number,
29+
profile: 0 | 1 | 2,
30+
fps: 15 | 20 | 24 | 30,
31+
videoFrontMirror: boolean
32+
}
33+
type Props = {
34+
outputUrl: string,
35+
camera: Camera,
36+
audio: Audio,
37+
video: Video,
38+
autopreview: boolean,
39+
denoise: boolean,
40+
smoothSkinLevel: 0 | 1 | 2 | 3 | 4 | 5,
41+
onStatus: Function,
42+
...ViewPropTypes
43+
}
44+
class NodeCameraView extends PureComponent<Props> {
45+
name: string = "NodeCameraView"
46+
videoRef: any = React.createRef()
1547

16-
class NodeCameraView extends Component {
17-
constructor(props) {
18-
super(props);
19-
}
20-
_onChange(event) {
48+
_onChange(event: Object) {
2149
if (!this.props.onStatus) {
22-
return;
50+
return
2351
}
24-
this.props.onStatus(event.nativeEvent.code, event.nativeEvent.message);
52+
this.props.onStatus(event.nativeEvent.code, event.nativeEvent.message)
2553
}
2654

2755
switchCamera() {
2856
UIManager.dispatchViewManagerCommand(
29-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
57+
findNodeHandle(this.videoRef.current),
3058
UIManager.RCTNodeCamera.Commands.switchCamera,
3159
null
32-
);
60+
)
3361
}
3462

3563
flashEnable(enable) {
3664
UIManager.dispatchViewManagerCommand(
37-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
65+
findNodeHandle(this.videoRef.current),
3866
UIManager.RCTNodeCamera.Commands.flashEnable,
3967
[enable]
40-
);
68+
)
4169
}
4270

4371
startPreview() {
4472
UIManager.dispatchViewManagerCommand(
45-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
73+
findNodeHandle(this.videoRef.current),
4674
UIManager.RCTNodeCamera.Commands.startprev,
4775
null
48-
);
76+
)
4977
}
5078

5179
stopPreview() {
5280
UIManager.dispatchViewManagerCommand(
53-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
81+
findNodeHandle(this.videoRef.current),
5482
UIManager.RCTNodeCamera.Commands.stopprev,
5583
null
56-
);
84+
)
5785
}
5886

5987
start() {
6088
UIManager.dispatchViewManagerCommand(
61-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
89+
findNodeHandle(this.videoRef.current),
6290
UIManager.RCTNodeCamera.Commands.start,
6391
null
64-
);
92+
)
6593
}
6694

6795
stop() {
6896
UIManager.dispatchViewManagerCommand(
69-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
97+
findNodeHandle(this.videoRef.current),
7098
UIManager.RCTNodeCamera.Commands.stop,
7199
null
72-
);
100+
)
73101
}
74102

75103
render() {
76-
return <RCTNodeCamera
77-
{...this.props}
78-
ref={RCT_VIDEO_REF}
79-
onChange={this._onChange.bind(this)}
80-
/>;
81-
};
104+
return (
105+
<RCTNodeCamera
106+
{...this.props}
107+
ref={this.videoRef}
108+
onChange={this._onChange.bind(this)}
109+
/>
110+
)
111+
}
82112
}
83113

84-
NodeCameraView.name = RCT_VIDEO_REF;
85-
NodeCameraView.propTypes = {
86-
outputUrl: PropTypes.string,
87-
camera: PropTypes.shape({
88-
cameraId: PropTypes.oneOf([0, 1]),
89-
cameraFrontMirror: PropTypes.bool
90-
}),
91-
audio: PropTypes.shape({
92-
bitrate: PropTypes.number,
93-
profile: PropTypes.oneOf([0, 1, 2]),
94-
samplerate: PropTypes.oneOf([8000, 16000, 32000, 44100, 48000]),
95-
}),
96-
video: PropTypes.shape({
97-
preset: PropTypes.number,
98-
bitrate: PropTypes.number,
99-
profile: PropTypes.oneOf([0, 1, 2]),
100-
fps: PropTypes.oneOf([15, 20, 24, 30]),
101-
videoFrontMirror: PropTypes.bool
102-
}),
103-
autopreview:PropTypes.bool,
104-
denoise: PropTypes.bool,
105-
smoothSkinLevel: PropTypes.oneOf([0, 1, 2, 3, 4, 5]),
106-
onStatus: PropTypes.func,
107-
...View.propTypes // 包含默认的View的属性
108-
};
109-
110-
const RCTNodeCamera = requireNativeComponent('RCTNodeCamera', NodeCameraView, {
114+
const RCTNodeCamera = requireNativeComponent("RCTNodeCamera", NodeCameraView, {
111115
nativeOnly: { onChange: true }
112-
});
116+
})
113117

114-
module.exports = NodeCameraView;
118+
export default NodeCameraView

NodePlayerModule.js

Lines changed: 41 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,78 @@
1-
//
1+
//@flow
22
// NodePlayerModule.js
33
//
44
// Created by Mingliang Chen on 2017/11/29.
5+
// Upgraded by Anh Tuan Nguyen on 2018/08/06.
56
// Copyright © 2017年 NodeMedia. All rights reserved.
67
//
78

8-
import React, { Component } from 'react';
9-
import { PropTypes } from 'prop-types';
10-
import { requireNativeComponent, View, UIManager, findNodeHandle } from 'react-native';
11-
9+
import React, { PureComponent } from "react"
10+
import {
11+
requireNativeComponent,
12+
ViewPropTypes,
13+
UIManager,
14+
findNodeHandle
15+
} from "react-native"
1216

17+
type Props = {
18+
inputUrl: string,
19+
bufferTime: number,
20+
maxBufferTime: number,
21+
autoplay: boolean,
22+
scaleMode: "ScaleToFill" | "ScaleAspectFit" | "ScaleAspectFill",
23+
renderType: "SURFACEVIEW" | "TEXTUREVIEW",
24+
onStatus: Function,
25+
...ViewPropTypes
26+
}
1327

14-
var RCT_VIDEO_REF = 'NodePlayerView';
28+
class NodePlayerView extends PureComponent<Props> {
29+
name: string = "NodePlayerView"
30+
videoRef: any = React.createRef()
1531

16-
class NodePlayerView extends Component {
17-
constructor(props) {
18-
super(props);
19-
}
2032
_onChange(event) {
2133
if (!this.props.onStatus) {
22-
return;
34+
return
2335
}
24-
this.props.onStatus(event.nativeEvent.code, event.nativeEvent.message);
36+
this.props.onStatus(event.nativeEvent.code, event.nativeEvent.message)
2537
}
2638

2739
pause() {
2840
UIManager.dispatchViewManagerCommand(
29-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
41+
findNodeHandle(this.videoRef.current),
3042
UIManager.RCTNodePlayer.Commands.pause,
3143
null
32-
);
44+
)
3345
}
3446

3547
start() {
3648
UIManager.dispatchViewManagerCommand(
37-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
49+
findNodeHandle(this.videoRef.current),
3850
UIManager.RCTNodePlayer.Commands.start,
3951
null
40-
);
52+
)
4153
}
4254

4355
stop() {
4456
UIManager.dispatchViewManagerCommand(
45-
findNodeHandle(this.refs[RCT_VIDEO_REF]),
57+
findNodeHandle(this.videoRef.current),
4658
UIManager.RCTNodePlayer.Commands.stop,
4759
null
48-
);
60+
)
4961
}
5062

5163
render() {
52-
return <RCTNodePlayer
53-
{...this.props}
54-
ref={RCT_VIDEO_REF}
55-
onChange={this._onChange.bind(this)}
56-
/>;
57-
};
64+
return (
65+
<RCTNodePlayer
66+
{...this.props}
67+
ref={RCT_VIDEO_REF}
68+
onChange={this._onChange.bind(this)}
69+
/>
70+
)
71+
}
5872
}
59-
NodePlayerView.name = RCT_VIDEO_REF;
60-
NodePlayerView.propTypes = {
61-
inputUrl: PropTypes.string,
62-
bufferTime: PropTypes.number,
63-
maxBufferTime: PropTypes.number,
64-
autoplay: PropTypes.bool,
65-
scaleMode: PropTypes.oneOf(['ScaleToFill', 'ScaleAspectFit', 'ScaleAspectFill']),
66-
renderType: PropTypes.oneOf(['SURFACEVIEW', 'TEXTUREVIEW']),
67-
onStatus: PropTypes.func,
68-
...View.propTypes // 包含默认的View的属性
69-
};
7073

71-
const RCTNodePlayer = requireNativeComponent('RCTNodePlayer', NodePlayerView, {
74+
const RCTNodePlayer = requireNativeComponent("RCTNodePlayer", NodePlayerView, {
7275
nativeOnly: { onChange: true }
73-
});
76+
})
7477

75-
module.exports = NodePlayerView;
78+
export default NodePlayerView

0 commit comments

Comments
 (0)