').attr('class', 'wcDebug');
container.append(jQuery('
').html('This is errors log. Select and copy the text below:'));
container.append(debugContainer);
}
debugContainer.html(debugLog.join('
'));
}
function onInputKeyPress(e) {
if (!isMessageMultiline && e.which == 13) {
sendMessage();
}
if (isMessageMultiline && e.which == 13 && e.shiftKey) {
sendMessage();
}
};
function onInputKeyDown(e) {
if (!isMessageMultiline) {
var keyCode = e.which;
var messageCandidate = null;
if (keyCode == 38) {
messageCandidate = messagesHistory.getPreviousMessage();
} else if (keyCode == 40) {
messageCandidate = messagesHistory.getNextMessage();
}
if (messageCandidate !== null) {
messagesInput.val(messageCandidate);
}
}
};
function refreshUsersList(data) {
usersListContainer.html(data);
}
function refreshUsersCounter(data) {
var total = data.total > 0 ? data.total : 1;
if (options.channelUsersLimit > 0) {
usersCounter.html(total + " / " + options.channelUsersLimit);
} else {
usersCounter.html(total);
}
}
function setMessagesProperty(data) {
container.find('div[data-chat-user-id="' + data.chatUserId + '"]').each(function(index, element) {
if (data.propertyName == 'textColor') {
var cssSelector = '.wcMessageUser, .wcMessageUser a, .wcMessageContent, .wcMessageTime';
jQuery(element).find(cssSelector).css({color: data.propertyValue});
}
});
}
function onWindowResize() {
if (container.width() < 300) {
container.addClass('wcWidth300');
} else {
container.removeClass('wcWidth300');
}
}
function onMessageDelete() {
if (!confirm('Are you sure you want to delete this message?')) {
return;
}
var deleteButton = jQuery(this);
var messageId = deleteButton.data('id');
jQuery.ajax({
type: "POST",
url: messageDeleteEndpoint,
data: {
channelId: channelId,
messageId: messageId,
checksum: options.checksum
}
})
.success(function() {
hideMessage(messageId);
})
.error(function(jqXHR, textStatus, errorThrown) {
logDebug('[onMessageDelete] ' + jqXHR.responseText);
showErrorMessage('Server error: ' + errorThrown);
});
}
function onUserBan() {
if (!confirm('Are you sure you want to ban this user?')) {
return;
}
var messageId = jQuery(this).data('id');
jQuery.ajax({
type: "POST",
url: userBanEndpoint,
data: {
channelId: channelId,
messageId: messageId,
checksum: options.checksum
}
})
.success(function(result) {
try {
var response = jQuery.parseJSON(result);
if (response.error) {
showErrorMessage(response.error);
}
}
catch (e) {
showErrorMessage('Server error: ' + e.toString());
}
})
.error(function(jqXHR, textStatus, errorThrown) {
logDebug('[onUserBan] ' + jqXHR.responseText);
showErrorMessage('Server error occurred: ' + errorThrown);
});
}
function onUserNameClick() {
appendTextToInputField('@' + jQuery(this).text() + ': ');
}
function attachEventListeners() {
container.on('click', 'a.wcMessageDeleteButton', onMessageDelete);
container.on('click', 'a.wcUserBanButton', onUserBan);
container.on('click', 'a.wcMessageUserReplyTo', onUserNameClick);
}
// DOM events:
messagesInput.keypress(onInputKeyPress);
messagesInput.keydown(onInputKeyDown);
submitButton.click(sendMessage);
jQuery(window).resize(onWindowResize);
// public API:
this.start = function() {
initializeRefresher();
dateAndTimeRenderer.convertUTCMessagesTime(container, options.nowTime);
onWindowResize();
attachEventListeners();
scrollMessages();
};
this.scrollMessages = scrollMessages;
this.showErrorMessage = showErrorMessage;
this.hideMessage = hideMessage;
this.hideAllMessages = hideAllMessages;
this.refreshUsersList = refreshUsersList;
this.refreshUsersCounter = refreshUsersCounter;
this.replaceUserNameInMessages = replaceUserNameInMessages;
this.refreshPlainUserName = refreshPlainUserName;
this.setMessagesProperty = setMessagesProperty;
this.appendTextToInputField = appendTextToInputField;
this.logDebug = logDebug;
};