164 lines
5.5 KiB
JavaScript
164 lines
5.5 KiB
JavaScript
(function(context,$) {
|
|
|
|
"use strict";
|
|
|
|
context.JK = context.JK || {};
|
|
|
|
// Class to intercept and delegate out all backend alerts as necessary
|
|
// better if modules that needed certain events would just register for them.
|
|
context.JK.BackendAlerts = function(app) {
|
|
|
|
var $document = $(document);
|
|
var logger = context.JK.logger;
|
|
|
|
var ALERT_TYPES = context.JK.ALERT_TYPES;
|
|
var ALERT_NAMES = context.JK.ALERT_NAMES;
|
|
|
|
function onNoValidAudioConfig(type, text) {
|
|
app.notify({
|
|
"title": ALERT_TYPES[type].title,
|
|
"text": text,
|
|
"icon_url": "/assets/content/icon_alert_big.png"
|
|
});
|
|
context.location = "/client#"; // leaveSession will be called in beforeHide below
|
|
}
|
|
|
|
async function onStunEvent() {
|
|
var testResults = await context.jamClient.NetworkTestResult();
|
|
|
|
$.each(testResults, function (index, val) {
|
|
if (val.bStunFailed) {
|
|
// if true we could not reach a stun server
|
|
}
|
|
else if (val.bRemoteUdpBocked) {
|
|
// if true the user cannot communicate with peer via UDP, although they could do LAN based session
|
|
}
|
|
});
|
|
}
|
|
|
|
function onGenericEvent(type, text) {
|
|
|
|
var alert = ALERT_TYPES[type];
|
|
|
|
if(alert && alert.title) {
|
|
context.NotificationActions.backendNotification({msg: alert.title, detail: alert.message, backend_detail:text, help: alert.help})
|
|
}
|
|
else {
|
|
logger.debug("Unhandled Backend Event type %o, data %o", type, text)
|
|
}
|
|
|
|
}
|
|
|
|
function alertCallback(type, text) {
|
|
|
|
function timeCallback() {
|
|
var start = new Date();
|
|
setTimeout(function() {
|
|
var timed = new Date().getTime() - start.getTime();
|
|
if(timed > 250) {
|
|
logger.warn("SLOW AlERT_CALLBACK. type: %o text: %o time: %o", type, text, timed);
|
|
}
|
|
}, 1);
|
|
}
|
|
|
|
timeCallback();
|
|
|
|
logger.debug("alert callback", type, text);
|
|
|
|
var alertData = $.extend({}, ALERT_TYPES[type]);
|
|
|
|
alertData.text = text;
|
|
if(alertData && alertData.name) {
|
|
$document.triggerHandler(alertData.name, alertData);
|
|
}
|
|
|
|
if (type === 2) { // BACKEND_MIXER_CHANGE
|
|
|
|
context.MixerActions.mixersChanged(type, text)
|
|
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onBackendMixerChanged(type, text)
|
|
}
|
|
else if (type === ALERT_NAMES.NO_VALID_AUDIO_CONFIG) { // NO_VALID_AUDIO_CONFIG
|
|
if(context.JK.GearUtilsInstance && context.JK.GearUtilsInstance.isRestartingAudio()) {
|
|
// squelch this warning, because we are restarting audio
|
|
}
|
|
else {
|
|
onNoValidAudioConfig(type, text);
|
|
}
|
|
|
|
}
|
|
else if (type === ALERT_NAMES.AUDIO_DEVICE_NOT_PRESENT) { // NO_VALID_AUDIO_CONFIG
|
|
if(context.JK.GearUtilsInstance && context.JK.GearUtilsInstance.isRestartingAudio()) {
|
|
// squelch this warning, because we are restarting audio
|
|
}
|
|
else {
|
|
onGenericEvent(type, text);
|
|
}
|
|
}
|
|
else if (type === 24) {
|
|
onStunEvent();
|
|
}
|
|
else if (type === 26) { // DEAD_USER_REMOVE_EVENT
|
|
MixerActions.deadUserRemove(text);
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onDeadUserRemove(type, text);
|
|
}
|
|
else if (type === 27) { // WINDOW_CLOSE_BACKGROUND_MODE
|
|
|
|
SessionActions.windowBackgrounded()
|
|
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onWindowBackgrounded(type, text);
|
|
}
|
|
else if(type === ALERT_NAMES.SESSION_LIVEBROADCAST_FAIL) {
|
|
SessionActions.broadcastFailure(text)
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onBroadcastFailure(type, text);
|
|
}
|
|
else if(type === ALERT_NAMES.SESSION_LIVEBROADCAST_ACTIVE) {
|
|
SessionActions.broadcastSuccess(text)
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onBroadcastSuccess(type, text);
|
|
}
|
|
else if(type === ALERT_NAMES.SESSION_LIVEBROADCAST_STOPPED) {
|
|
SessionActions.broadcastStopped(text)
|
|
//if(context.JK.CurrentSessionModel)
|
|
//context.JK.CurrentSessionModel.onBroadcastStopped(type, text);
|
|
}
|
|
else if(type === ALERT_NAMES.RECORD_PLAYBACK_STATE) {
|
|
//if(context.JK.CurrentSessionModel)
|
|
// context.JK.CurrentSessionModel.onPlaybackStateChange(type, text);
|
|
context.MediaPlaybackActions.playbackStateChange(text);
|
|
}
|
|
else if(type === ALERT_NAMES.VIDEO_WINDOW_OPENED) {
|
|
context.VideoActions.videoWindowOpened()
|
|
}
|
|
else if(type === ALERT_NAMES.VIDEO_WINDOW_CLOSED) {
|
|
context.VideoActions.videoWindowClosed()
|
|
}
|
|
else if (type === ALERT_NAMES.VST_CHANGED) {
|
|
console.log("VST CHANGED!")
|
|
context.ConfigureTracksActions.vstChanged()
|
|
}
|
|
else if((!context.JK.CurrentSessionModel || !context.JK.CurrentSessionModel.inSession()) &&
|
|
(ALERT_NAMES.INPUT_IO_RATE == type || ALERT_NAMES.INPUT_IO_JTR == type || ALERT_NAMES.OUTPUT_IO_RATE == type || ALERT_NAMES.OUTPUT_IO_JTR== type)) {
|
|
// squelch these events if not in session
|
|
}
|
|
else if(type != 30 && type != 31 && type != 21){ // these are handled elsewhere
|
|
onGenericEvent(type, text);
|
|
}
|
|
}
|
|
|
|
async function initialize() {
|
|
await context.jamClient.SessionSetAlertCallback("JK.AlertCallback");
|
|
}
|
|
|
|
this.initialize = initialize;
|
|
|
|
context.JK.AlertCallback = alertCallback;
|
|
|
|
return this;
|
|
}
|
|
|
|
})(window, jQuery); |