enx-rtc-react-native
Version:
It is a react native component for Enablex users.
74 lines (64 loc) • 1.92 kB
JavaScript
import { NativeModules, NativeEventEmitter, PermissionsAndroid } from 'react-native';
import { each } from 'underscore';
const Enx = NativeModules.EnxRoomManager;
const nativeEvents = new NativeEventEmitter(Enx);
const checkAndroidPermissions = () => new Promise((resolve, reject) => {
PermissionsAndroid.requestMultiple([
PermissionsAndroid.PERMISSIONS.CAMERA,
PermissionsAndroid.PERMISSIONS.RECORD_AUDIO
])
.then((result) => {
const permissionsError = {};
permissionsError.permissionsDenied = [];
each(result, (permissionValue, permissionType) => {
if (permissionValue === 'denied') {
console.log("denied Permission");
permissionsError.permissionsDenied.push(permissionType);
permissionsError.type = 'Permissions error';
}
});
if (permissionsError.permissionsDenied.length > 0) {
console.log("denied Permission");
reject(permissionsError);
} else {
console.log("granted Permission");
resolve();
}
})
.catch((error) => {
reject(error);
});
});
const setNativeEvents = (events) => {
const eventNames = Object.keys(events);
Enx.setNativeEvents(eventNames);
each(events, (eventHandler, eventType) => {
const allEvents = []
if (!allEvents.includes(eventType)) {
nativeEvents.addListener(eventType, eventHandler);
}
});
};
const removeNativeEvents = (events) => {
const eventNames = Object.keys(events);
Enx.removeNativeEvents(eventNames);
each(events, (eventHandler, eventType) => {
nativeEvents.remove;
});
};
export {
Enx,
nativeEvents,
setNativeEvents,
removeNativeEvents,
checkAndroidPermissions,
EnxPubType,
EnxPubMode
};
const EnxPubType = {
SCREEN : "screen",
CANVAS: "canvas"
}
const EnxPubMode = Object.freeze({
ALL:"all", AUTHERIZE:"authorize", MODEATORS:"moderators",
})