opentok-react-native
Version:
React Native components for OpenTok iOS and Android SDKs
97 lines (89 loc) • 2.71 kB
JavaScript
import { reassignEvents } from './OTHelper';
import { handleSignalError, handleError } from '../OTError';
import { each, isNull, isEmpty, isString } from 'underscore';
const sanitizeSessionEvents = (events) => {
if (typeof events !== 'object') {
return {};
}
const customEvents = {
ios: {
streamCreated: 'streamCreated',
streamDestroyed: 'streamDestroyed',
sessionConnected: 'sessionDidConnect',
sessionDisconnected: 'sessionDidDisconnect',
signal: 'signal',
connectionCreated: 'connectionCreated',
connectionDestroyed: 'connectionDestroyed',
error: 'didFailWithError',
sessionReconnected: 'sessionDidReconnect',
sessionReconnecting: 'sessionDidBeginReconnecting',
archiveStarted: 'archiveStartedWithId',
archiveStopped: 'archiveStoppedWithId',
},
android: {
streamCreated: 'onStreamReceived',
streamDestroyed: 'onStreamDropped',
sessionConnected: 'onConnected',
sessionDisconnected: 'onDisconnected',
signal: 'onSignalReceived',
connectionCreated: 'onConnectionCreated',
connectionDestroyed: 'onConnectionDestroyed',
error: 'onError',
sessionReconnected: 'onReconnected',
sessionReconnecting: 'onReconnecting',
archiveStarted: 'onArchiveStarted',
archiveStopped: 'onArchiveStopped',
},
};
return reassignEvents('session', customEvents, events);
};
const validateString = value => (isString(value) ? value : '');
const sanitizeSignalData = (signal) => {
if (typeof signal !== 'object') {
return {
type: '',
data: '',
errorHandler: handleSignalError,
};
}
return {
type: validateString(signal.type),
data: validateString(signal.data),
errorHandler: typeof signal.errorHandler !== 'function' ? handleSignalError : signal.errorHandler,
};
};
const sanitizeCredentials = (credentials) => {
const _credentials = {};
each(credentials, (value, key) => {
if(!isString(value) || isEmpty(value) || isNull(value)) {
handleError(`Please add the ${key}`);
} else {
_credentials[key] = value;
}
});
return _credentials;
};
const getConnectionStatus = (connectionStatus) => {
switch(connectionStatus) {
case 0:
return "not connected";
case 1:
return "connected";
case 2:
return "connecting";
case 3:
return "reconnecting";
case 4:
return "disconnecting";
case 5:
return "failed";
}
};
const isConnected = (connectionStatus) => (getConnectionStatus(connectionStatus) === 'connected');
export {
sanitizeSessionEvents,
sanitizeSignalData,
sanitizeCredentials,
getConnectionStatus,
isConnected,
};