enx-rtc-react-native
Version:
It is a react native component for Enablex users.
58 lines (50 loc) • 1.77 kB
JavaScript
import React, { Component } from "react";
import PropTypes from "prop-types";
import { View} from "react-native";
import { Enx, removeNativeEvents, setNativeEvents } from "./Enx";
import EnxPlayerView from "./views/EnxPlayerView";
import { sanitizePlayerViewEvents } from "./helpers/EnxStreamHelper";
import 'react-native-get-random-values';
import {v4 as uuid4} from "uuid";
import { isNull } from "underscore";
class EnxStream extends Component {
constructor(props) {
super(props);
this.state = {
streamId: this.props.isPreview ? "abc-123-xyz" : uuid4(),
isFrontCamera: this.props.isFrontCamera
};
}
componentDidMount() {
if (this.props.eventHandlers != null) {
const publisherEvents = sanitizePlayerViewEvents(this.props.eventHandlers);
setNativeEvents(publisherEvents);
}
Enx.initStream(this.state.streamId, this.state.isFrontCamera);
}
//loadView(){}
componentWillUnmount() {
if (this.props.eventHandlers != null) {
const events = sanitizePlayerViewEvents(this.props.eventHandlers);
removeNativeEvents(events); // <-- THIS is important
}
}
render() {
const { streamId, isFrontCamera } = this.state;
//console.log("EnxStream.id", streamId);
return <EnxPlayerView streamId={streamId} isLocal="local" isFrontCamera={isFrontCamera} {...this.props} />;
}
}
const viewPropTypes = View.propTypes;
EnxStream.propTypes = {
...viewPropTypes,
eventHandlers: PropTypes.object, // eslint-disable-line react/forbid-prop-types
isPreview: PropTypes.bool,
isFrontCamera: PropTypes.bool
};
EnxStream.defaultProps = {
eventHandlers: {},
isPreview: false,
isFrontCamera: true
};
export default EnxStream;