src/calls/CallEndReason.js
import {Enum} from '../utils';
import Logs from '../Logs';
const log = Logs.instance.getLogger('SippoJS/CallEndReason');
/**
* Enum containing the possible end reasons of a call. Possible values:
* - UNSPECIFIED
* - NORMAL_CLEARING
* - BROWSER_CLOSED
* - BAD_REQUEST
* - ORIGINATOR_CANCEL
* - NOT_FOUND
* - USER_BUSY
* - NO_ANSWER
* - MEDIA_ACCESS_ERROR
* - SERVER_ERROR
* @type {Enum}
*/
export const CallEndReason = new Enum([
'UNSPECIFIED',
'NORMAL_CLEARING',
'BROWSER_CLOSED',
'BAD_REQUEST',
'ORIGINATOR_CANCEL',
'NOT_FOUND',
'USER_BUSY',
'NO_ANSWER',
'MEDIA_ACCESS_ERROR',
'SERVER_ERROR',
]);
/** @protected */
export function getEndReasonFromWacValue(wacEndReason) {
switch (wacEndReason) {
case 'notfound':
case 'unavailable':
return CallEndReason.NOT_FOUND;
case 'unknown':
return CallEndReason.UNSPECIFIED;
case 'normal':
return CallEndReason.NORMAL_CLEARING;
case 'closebrowser':
return CallEndReason.BROWSER_CLOSED;
case 'rejected':
return CallEndReason.USER_BUSY;
case 'timeout':
case 'noattended':
return CallEndReason.NO_ANSWER;
case 'webrtcunsupported':
case 'webrtcerror':
case 'deniedmediaaccess':
return CallEndReason.MEDIA_ACCESS_ERROR;
case 'missed':
case 'leavesqueue':
return CallEndReason.ORIGINATOR_CANCEL;
case 'badrequest':
case 'notallowed':
return CallEndReason.BAD_REQUEST;
case 'cleanup':
case 'networkerror':
case 'servererror':
default:
log.warn(`Unexpected end reason received from wac: ${wacEndReason}`);
return CallEndReason.SERVER_ERROR;
}
}