@pano.video/panortc-react-native-sdk
Version:
PanoRtc SDK For React Native
160 lines (127 loc) • 4.34 kB
JavaScript
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import React, { Component } from 'react';
import { requireNativeComponent, UIManager, findNodeHandle, NativeEventEmitter, NativeModules } from 'react-native';
const {
/**
* @ignore
*/
PanoRtcSurfaceViewEventEmitter,
PanoRtcWhiteboardSurfaceViewEventEmitter
} = NativeModules;
/**
* @ignore
*/
const SurfaceViewPrefix = PanoRtcSurfaceViewEventEmitter.prefix;
const WhiteboardViewPrefix = PanoRtcWhiteboardSurfaceViewEventEmitter.prefix;
/**
* @ignore
*/
const RtcSurfaceViewEmitter = new NativeEventEmitter(PanoRtcSurfaceViewEventEmitter);
const RtcWhiteboardSurfaceViewEmitter = new NativeEventEmitter(PanoRtcWhiteboardSurfaceViewEventEmitter);
/**
* @ignore
*/
const RCTRtcWhiteboardSurfaceView = requireNativeComponent('RCTPanoRtcWhiteboardSurfaceView');
/**
* @ignore
*/
const RCTRtcSurfaceView = requireNativeComponent('RCTPanoRtcSurfaceView');
/**
* @ignore
*/
export class RtcSurfaceView extends Component {
constructor(...args) {
super(...args);
_defineProperty(this, "_nextRequestId", 1);
_defineProperty(this, "_requestMap", new Map());
_defineProperty(this, "subscription", RtcSurfaceViewEmitter.addListener(SurfaceViewPrefix + 'onResultReturned', event => {
let {
reactTag,
requestId,
result,
error
} = event;
if (reactTag != findNodeHandle(this)) {
return;
}
let promise = this._requestMap.get(requestId);
if (result != null) {
// If it was successful, we resolve the promise.
promise.resolve(result);
} else {
// Otherwise, we reject it.
promise.reject(error);
} // Finally, we clean up our request map.
this._requestMap.delete(requestId);
}));
}
componentWillUnmount() {
this.subscription.remove();
}
_callMethod(method, args) {
let requestId = this._nextRequestId++;
let requestMap = this._requestMap; // We create a promise here that will be resolved once _onRequestDone is
// called.
let promise = new Promise((resolve, reject) => {
requestMap.set(requestId, {
resolve: resolve,
reject: reject
});
});
UIManager.dispatchViewManagerCommand(findNodeHandle(this), UIManager.getViewManagerConfig('RCTPanoRtcSurfaceView').Commands.callMethod, [method, requestId, args]);
return promise;
}
render() {
return /*#__PURE__*/React.createElement(RCTRtcSurfaceView, this.props);
}
}
/**
* @ignore
*/
export class RtcWhiteboardSurfaceView extends Component {
constructor(...args) {
super(...args);
_defineProperty(this, "_nextRequestId", 1);
_defineProperty(this, "_requestMap", new Map());
_defineProperty(this, "subscription", RtcWhiteboardSurfaceViewEmitter.addListener(WhiteboardViewPrefix + 'onResultReturned', event => {
let {
reactTag,
requestId,
result,
error
} = event;
if (reactTag != findNodeHandle(this)) {
return;
}
let promise = this._requestMap.get(requestId);
if (result != null) {
// If it was successful, we resolve the promise.
promise.resolve(result);
} else {
// Otherwise, we reject it.
promise.reject(error);
} // Finally, we clean up our request map.
this._requestMap.delete(requestId);
}));
}
componentWillUnmount() {
this.subscription.remove();
}
_callMethod(method, args) {
let requestId = this._nextRequestId++;
let requestMap = this._requestMap; // We create a promise here that will be resolved once _onRequestDone is
// called.
let promise = new Promise((resolve, reject) => {
requestMap.set(requestId, {
resolve: resolve,
reject: reject
});
});
UIManager.dispatchViewManagerCommand(findNodeHandle(this), UIManager.getViewManagerConfig('RCTPanoRtcWhiteboardSurfaceView').Commands.callMethod, [method, requestId, args]);
return promise;
}
render() {
return /*#__PURE__*/React.createElement(RCTRtcWhiteboardSurfaceView, this.props);
}
}
//# sourceMappingURL=RtcRenderView.native.js.map