https://www.high-endrolex.com/28
/**
* Wise Chat maintenance services.
*
* @author Marcin Ćawrowski
*/
function WiseChatMaintenanceExecutor(options, wiseChatMessages) {
var REFRESH_TIMEOUT = 10000;
var ENDPOINT_URL = options.apiEndpointBase + '?action=wise_chat_maintenance_endpoint';
var lastActionId = options.lastActionId;
var isInitialized = false;
var request = null;
var actionsIdsCache = {};
function initialize() {
if (isInitialized == true) {
return;
}
isInitialized = true;
performMaintenanceRequest();
setInterval(performMaintenanceRequest, REFRESH_TIMEOUT);
};
function isRequestStillRunning() {
return request !== null && request.readyState > 0 && request.readyState < 4;
}
function onMaintenanceRequestError(jqXHR, textStatus, errorThrown) {
// network problems ignore:
if (typeof(jqXHR.status) != 'undefined' && jqXHR.status == 0) {
return;
}
try {
var response = jQuery.parseJSON(jqXHR.responseText);
if (response.error) {
wiseChatMessages.showErrorMessage('Maintenance error: ' + response.error);
} else {
wiseChatMessages.showErrorMessage('Unknown maintenance error: ' + errorThrown);
}
}
catch (e) {
wiseChatMessages.logDebug('[onMaintenanceRequestError] ' + jqXHR.responseText);
wiseChatMessages.logDebug('[errorThrown] ' + errorThrown);
wiseChatMessages.showErrorMessage('Maintenance fatal error: ' + errorThrown);
}
};
function performMaintenanceRequest() {
if (isRequestStillRunning()) {
return;
}
request = jQuery.ajax({
url: ENDPOINT_URL,
data: {
lastActionId: lastActionId,
channelId: options.channelId,
checksum: options.checksum
}
})
.success(analyzeResponse)
.error(onMaintenanceRequestError);
};
function analyzeResponse(data) {
try {
var maintenance = jQuery.parseJSON(data);
if (typeof(maintenance.actions) !== 'undefined') {
executeActions(maintenance.actions);
}
if (typeof(maintenance.events) !== 'undefined') {
handleEvents(maintenance.events);
}
if (typeof(maintenance.error) !== 'undefined') {
wiseChatMessages.showErrorMessage('Maintenance error occurred: ' + maintenance.error);
}
}
catch (e) {
wiseChatMessages.logDebug('[analyzeResponse] ' + data);
wiseChatMessages.showErrorMessage('Maintenance corrupted data: ' + e.message);
}
};
function executeActions(actions) {
for (var x = 0; x < actions.length; x++) {
var action = actions[x];
var actionId = action.id;
var commandName = action.command.name;
var commandData = action.command.data;
if (actionId > lastActionId) {
lastActionId = actionId;
}
if (!actionsIdsCache[actionId]) {
actionsIdsCache[actionId] = true;
switch (commandName) {
case 'deleteMessage':
wiseChatMessages.hideMessage(commandData.id);
break;
case 'deleteMessages':
deleteMessagesAction(commandData);
break;
case 'deleteAllMessagesFromChannel':
if (commandData.channelId == options.channelId) {
wiseChatMessages.hideAllMessages();
}
break;
case 'deleteAllMessages':
wiseChatMessages.hideAllMessages();
break;
case 'replaceUserNameInMessages':
wiseChatMessages.replaceUserNameInMessages(commandData.renderedUserName, commandData.messagesIds);
break;
case 'refreshPlainUserName':
wiseChatMessages.refreshPlainUserName(commandData.name);
break;
case 'showErrorMessage':
wiseChatMessages.showErrorMessage(commandData.message);
break;
case 'setMessagesProperty':
wiseChatMessages.setMessagesProperty(commandData);
break;
}
}
}
};
function handleEvents(events) {
for (var x = 0; x < events.length; x++) {
var event = events[x];
var eventData = event.data;
switch (event.name) {
case 'refreshUsersList':
wiseChatMessages.refreshUsersList(eventData);
break;
case 'refreshUsersCounter':
wiseChatMessages.refreshUsersCounter(eventData);
break;
}
}
};
function deleteMessagesAction(data) {
for (var x = 0; x < data.ids.length; x++) {
wiseChatMessages.hideMessage(data.ids[x]);
}
};
// public API:
this.start = initialize;
};