amazon-ivs-react-native-broadcast
Version:
A React Native wrapper for the Amazon IVS iOS and Android broadcast SDKs
229 lines (194 loc) • 9.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCommandIdByPlatform = exports.default = exports.NATIVE_VIEW_NAME = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _IVSBroadcastCameraView = require("./IVSBroadcastCameraView.types");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const isNumber = value => typeof value === 'number';
const UNKNOWN = 'unknown';
const NATIVE_VIEW_NAME = 'RCTIVSBroadcastCameraView';
exports.NATIVE_VIEW_NAME = NATIVE_VIEW_NAME;
const NATIVE_SIDE_COMMANDS = _reactNative.UIManager.getViewManagerConfig(NATIVE_VIEW_NAME).Commands;
const RCTIVSBroadcastCameraView = (0, _reactNative.requireNativeComponent)(NATIVE_VIEW_NAME);
const getCommandIdByPlatform = command => {
switch (_reactNative.Platform.OS) {
case 'android':
{
return command;
}
case 'ios':
{
return NATIVE_SIDE_COMMANDS[command];
}
default:
{
return '';
}
}
};
exports.getCommandIdByPlatform = getCommandIdByPlatform;
const IVSBroadcastCameraView = /*#__PURE__*/(0, _react.forwardRef)((props, parentRef) => {
const {
onError,
onBroadcastError,
onIsBroadcastReady,
onBroadcastAudioStats,
onBroadcastStateChanged,
onBroadcastQualityChanged,
onNetworkHealthChanged,
onTransmissionStatisticsChanged,
onAudioSessionInterrupted,
onAudioSessionResumed,
onMediaServicesWereLost,
onMediaServicesWereReset,
isMuted = false,
isCameraPreviewMirrored = false,
cameraPosition = 'back',
cameraPreviewAspectMode = 'none',
logLevel = 'error',
sessionLogLevel = 'error',
...restProps
} = props;
const nativeViewRef = (0, _react.useRef)(null);
(0, _react.useImperativeHandle)(parentRef, () => {
const reactTag = (0, _reactNative.findNodeHandle)(nativeViewRef.current);
const dispatchViewManagerCommand = function (command) {
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
params[_key - 1] = arguments[_key];
}
return _reactNative.UIManager.dispatchViewManagerCommand(reactTag, getCommandIdByPlatform(command), params !== null && params !== void 0 ? params : []);
};
return {
start: function () {
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return dispatchViewManagerCommand(_IVSBroadcastCameraView.Command.Start, options);
},
stop: () => dispatchViewManagerCommand(_IVSBroadcastCameraView.Command.Stop),
/**
* @deprecated in favor of {@link cameraPosition}
*/
swapCamera: () => dispatchViewManagerCommand(_IVSBroadcastCameraView.Command.SwapCamera)
};
}, []);
const onErrorHandler = _ref => {
let {
nativeEvent
} = _ref;
return onError === null || onError === void 0 ? void 0 : onError(nativeEvent.message);
};
const onBroadcastErrorHandler = _ref2 => {
var _String;
let {
nativeEvent
} = _ref2;
const {
code,
type,
detail,
source,
isFatal,
sessionId
} = nativeEvent.exception;
onBroadcastError === null || onBroadcastError === void 0 ? void 0 : onBroadcastError({
code: (_String = String(code)) !== null && _String !== void 0 ? _String : UNKNOWN,
type: type !== null && type !== void 0 ? type : UNKNOWN,
source: source !== null && source !== void 0 ? source : UNKNOWN,
detail: detail !== null && detail !== void 0 ? detail : '',
isFatal: !!isFatal,
sessionId: sessionId !== null && sessionId !== void 0 ? sessionId : UNKNOWN
});
};
const onIsBroadcastReadyHandler = _ref3 => {
let {
nativeEvent
} = _ref3;
return onIsBroadcastReady === null || onIsBroadcastReady === void 0 ? void 0 : onIsBroadcastReady(nativeEvent.isReady);
};
const onBroadcastAudioStatsHandler = _ref4 => {
let {
nativeEvent
} = _ref4;
return onBroadcastAudioStats === null || onBroadcastAudioStats === void 0 ? void 0 : onBroadcastAudioStats(nativeEvent.audioStats);
};
const onBroadcastStateChangedHandler = _ref5 => {
let {
nativeEvent
} = _ref5;
const {
stateStatus: incomingStateStatus,
metadata
} = nativeEvent;
const outcomingStateStatus = isNumber(incomingStateStatus) ? _IVSBroadcastCameraView.StateStatusEnum[incomingStateStatus] : incomingStateStatus;
onBroadcastStateChanged === null || onBroadcastStateChanged === void 0 ? void 0 : onBroadcastStateChanged(outcomingStateStatus, metadata);
};
/**
* @deprecated in favor of {@link onTransmissionStatisticsChangedHandler}
*/
const onNetworkHealthChangedHandler = _ref6 => {
let {
nativeEvent
} = _ref6;
return onNetworkHealthChanged === null || onNetworkHealthChanged === void 0 ? void 0 : onNetworkHealthChanged(nativeEvent.networkHealth);
};
/**
* @deprecated in favor of {@link onTransmissionStatisticsChangedHandler}
*/
const onBroadcastQualityChangedHandler = _ref7 => {
let {
nativeEvent
} = _ref7;
return onBroadcastQualityChanged === null || onBroadcastQualityChanged === void 0 ? void 0 : onBroadcastQualityChanged(nativeEvent.quality);
};
const onTransmissionStatisticsChangedHandler = _ref8 => {
let {
nativeEvent
} = _ref8;
const {
networkHealth: incomingNetworkHealth,
broadcastQuality: incomingBroadcastQuality,
...rest
} = nativeEvent.statistics;
const networkHealth = isNumber(incomingNetworkHealth) ? _IVSBroadcastCameraView.NetworkHealthEnum[incomingNetworkHealth] : incomingNetworkHealth;
const broadcastQuality = isNumber(incomingBroadcastQuality) ? _IVSBroadcastCameraView.BroadcastQualityEnum[incomingBroadcastQuality] : incomingBroadcastQuality;
return onTransmissionStatisticsChanged === null || onTransmissionStatisticsChanged === void 0 ? void 0 : onTransmissionStatisticsChanged({
networkHealth,
broadcastQuality,
...rest
});
};
const onAudioSessionInterruptedHandler = () => onAudioSessionInterrupted === null || onAudioSessionInterrupted === void 0 ? void 0 : onAudioSessionInterrupted();
const onAudioSessionResumedHandler = () => onAudioSessionResumed === null || onAudioSessionResumed === void 0 ? void 0 : onAudioSessionResumed();
const onMediaServicesWereLostHandler = () => onMediaServicesWereLost === null || onMediaServicesWereLost === void 0 ? void 0 : onMediaServicesWereLost();
const onMediaServicesWereResetHandler = () => onMediaServicesWereReset === null || onMediaServicesWereReset === void 0 ? void 0 : onMediaServicesWereReset();
return /*#__PURE__*/_react.default.createElement(RCTIVSBroadcastCameraView, _extends({
testID: NATIVE_VIEW_NAME
}, restProps, {
ref: nativeViewRef,
isMuted: isMuted,
logLevel: logLevel,
sessionLogLevel: sessionLogLevel,
cameraPreviewAspectMode: cameraPreviewAspectMode,
isCameraPreviewMirrored: isCameraPreviewMirrored,
cameraPosition: cameraPosition,
onError: onErrorHandler,
onBroadcastError: onBroadcastErrorHandler,
onIsBroadcastReady: onIsBroadcastReadyHandler,
onBroadcastAudioStats: onBroadcastAudioStatsHandler,
onBroadcastStateChanged: onBroadcastStateChangedHandler,
onBroadcastQualityChanged: onBroadcastQualityChangedHandler,
onNetworkHealthChanged: onNetworkHealthChangedHandler,
onTransmissionStatisticsChanged: onTransmissionStatisticsChangedHandler,
onAudioSessionInterrupted: onAudioSessionInterruptedHandler,
onAudioSessionResumed: onAudioSessionResumedHandler,
onMediaServicesWereLost: onMediaServicesWereLostHandler,
onMediaServicesWereReset: onMediaServicesWereResetHandler
}));
});
var _default = IVSBroadcastCameraView;
exports.default = _default;
//# sourceMappingURL=IVSBroadcastCameraView.js.map