podchat-browser
Version:
Javascript SDK to use POD's Chat Service - Browser Only
204 lines (190 loc) • 6.01 kB
JavaScript
const errorList = {
INVALID_CALLID: {
code: 12000,
message: "[SDK] Call not started or invalid callId, methodName: {methodName}",
variables: ['{methodName}']
},
SOCKET_NOT_CONNECTED: {
code: 12002,
message: "[SDK] Async is not connected"
},
REQUEST_BLOCKED: {
code: 12003,
message: `[SDK] Requests to {methodName} has been blocked for next {seconds} seconds.`,
variables: ['{methodName}', '{seconds}']
},
CALL_SERVER_ERROR: {
code: 12004,
message: `[SDK] ERROR from call server: {errorMessage}`,
variables: ['{errorMessage}']
},
INVALID_APP_ID: {
code: 12005,
message: "[SDK] AppId is not valid. it should be a string with maximum of 30 characters"
},
INVALID_CONTACT_TYPE: {
code: 12006,
message: "[SDK] TypeCode is not valid"
},
PARAMETER_REQUIRED: {
code: 12007,
message: "[SDK] Parameter {parameterName} value is not valid.",
variables: ['{parameterName}']
},
/**
* 12350-12399
*/
INVITEES_LIST_REQUIRED: {
code: 12350,
message: "Invitees list is required, methodName: {methodName}",
variables: ['{methodName}']
},
/**
* 12400-12499 Media devices
*/
VIDEO_PERMISSION_ERROR: {
code: 12400,
message: "Could not grant video input permission"
},
AUDIO_PERMISSION_ERROR: {
code: 12401,
message: "Could not grant audio input permission"
},
AUDIO_OUT_PERMISSION_ERROR: {
code: 12402,
message: "Could not grant audio out permission"
},
MEDIA_DEVICES_NOT_SUPPORTED: {
code: 12403,
message: "Current environment does not supports user media devices"
},
SCREENSHARE_PERMISSION_ERROR: {
code: 12404,
message: "Could not grant screen share permission"
},
NO_AUDIO_TRACKS_AVAILABLE: {
code: 12405,
message: "Audio stream has no tracks"
},
AUDIO_TRACK_MUTED: {
code: 12406,
message: "Audio track is muted and is not useful anymore, request the permission again"
},
AUDIO_TRACK_ENDED: {
code: 12407,
message: "Audio track is ended and is not useful anymore, request the permission again"
},
AUDIO_TRACK_DISABLED: {
code: 12408,
message: "Audio track is disabled, enable it to be able to send voice"
},
CHANGE_MEDIA_DEVICE_FAILED: {
code: 12409,
message: "Can not change device"
},
REPLACE_STREAM_FAILED: {
code: 12410,
message: "Failed to replace stream in connection"
},
/**
* 12550-12570 ScreenShare
*/
SCREENSHARE_NOT_STARTED: {
code: 12550,
message: "ScreenShare not started "
},
NOT_SCREENSHARE_OWNER: {
code: 12551,
message: "You are not ScreenShare owner"
},
SCREENSHARE_ALREADY_STARTED: {
code: 12552,
message: "ScreenShare already started "
},
/**
* 12700-12720 Call stickers
*/
INVALID_STICKER_NAME: {
code: 12700,
message: "[SDK] Invalid sticker name. Use SDK.callStickerTypes"
},
/**
* 12721-12750 PodSpace Errors
*/
USER_NOT_MEMBER_OF_USERGROUP: {
code: 12721,
message: "[SDK] User is not member of userGroup in PodSpace, send threadId in params so sdk can retry the request"
},
DOWNLOAD_CANCELED: {
code: 12722,
message: "[SDK] Download canceled by user request."
},
/**
* 12751-12800 Call Methods Errors
*/
CAN_NOT_STOP_STREAM_IN_CURRENT_STATE: {
code: 12751,
message: "[SDK] Can not stop stream in current state"
},
CREATE_SESSION_TIMEOUT: {
code: 12752,
message: "[SDK] Call server is not responding to create_session request"
},
UPDATE_TRACK_REQUEST_TIMEOUT: {
code: 12753,
message: "[SDK] Call server is not responding to UPDATE/SUBSCRIBE request"
},
PEER_KEEPS_FAILING: {
code: 12754,
message: "[SDK] Open receive peer keeps failing"
},
NO_TURN_SERVER_AVAILABLE: {
code: 12755,
message: "[SDK] No turn server address received."
},
TURN_SERVERS_NOT_ACCESSIBLE: {
code: 12756,
message: "[SDK] Check turn server failed. Try changing your network."
},
};
function ErrorHandler(app) {
function handleError(error) {
let item = Object.values(errorList).filter(item => item.code == error);
if (!item.length)
return {};
return item[0];
}
function getFilledErrorObject(errorObject) {
for (let i in errorObject.variables) {
errorObject.message = errorObject.message.replace(errorObject.variables[i], errorObject.replacements[i])
}
return errorObject;
}
function raiseError(errorObject, callback, fireEvent = false, {
eventName = 'error',
eventType = null,
environmentDetails = null
}) {
callback && callback({
hasError: true,
errorCode: errorObject.code,
errorMessage: errorObject.message,
uniqueId: errorObject.uniqueId ? errorObject.uniqueId : undefined
});
fireEvent && app.chatEvents.fireEvent(eventName, {
type: eventType,
code: errorObject.code,
message: errorObject.message,
environmentDetails,
uniqueId: errorObject.uniqueId ? errorObject.uniqueId : undefined
});
return {hasError: true, ...errorObject};
}
return {
handleError,
raiseError,
getFilledErrorObject
}
}
export default ErrorHandler
export {errorList}