var load_messages_request = null;
var alert_message_time_interval = null;
var load_messages_reload_timeout = null;
var audio_message_preview = document.getElementById("audio_message_preview");
var page_rendering_fix = false;
var load_messages_reload_loop = 0;
var focus_on_send_button = false;
var shared_screenshot_BlobIds = [];
$('.main .chatbox > .contents > .chat_messages').on('scroll', function(e) {
$('.main .chatbox > .contents > .date').hide();
if (Math.abs($(this).scrollTop()) + $(this).innerHeight() >= $(this)[0].scrollHeight-60) {
if (!$('.main .chatbox > .contents > .chat_messages').hasClass('EndResults') && !$('.main .chatbox > .contents > .chat_messages').hasClass('loading')) {
$('.main .chatbox > .contents > .chat_messages').addClass('loading');
var data = {
message_id_less_than: get_message_id('first'),
prepend_messages: true,
};
if ($(".main .chatbox").attr('group_id') !== undefined) {
data['group_id'] = $(".main .chatbox").attr('group_id');
} else if ($(".main .chatbox").attr('user_id') !== undefined) {
data['user_id'] = $(".main .chatbox").attr('user_id');
}
if ($('.main .chatbox > .contents > .chat_messages').hasClass('searching')) {
if ($('.main .middle .search_messages > div > .search > div > input').val().length > 0) {
data['search'] = $('.main .middle .search_messages > div > .search > div > input').val();
}
}
if (data['group_id'] !== undefined || data['user_id'] !== undefined) {
load_conversation(data);
}
}
}
if (page_rendering_fix) {
$('.main .chatbox > .contents > .chat_messages').attr('style', 'overflow:auto');
setTimeout(function() {
$('.main .chatbox > .contents > .chat_messages').attr('style', 'overflow-x:hidden');
}, 500);
}
});
$("body").on('click', '.main .load_message', function(e) {
if ($(this).attr('message_id') !== undefined) {
var data = {
message_id: $(this).attr('message_id'),
prepend_messages: true,
find_message: true,
};
if ($(".main .chatbox").attr('group_id') !== undefined) {
data['group_id'] = $(".main .chatbox").attr('group_id');
} else if ($(".main .chatbox").attr('user_id') !== undefined) {
data['user_id'] = $(".main .chatbox").attr('user_id');
}
if (data['group_id'] !== undefined || data['user_id'] !== undefined) {
if (data['group_id'] == $(".main .chatbox").attr('group_id') || data['user_id'] == $(".main .chatbox").attr('user_id')) {
var message_element = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+data['message_id']+'"]');
if (message_element.length > 0) {
highlight_message(data['message_id']);
} else {
load_conversation(data);
}
}
}
}
});
$("body").on("keyup", ".main .middle .search_messages > div > .search > div > input", function(e) {
if (e.which == 13 || search_on_change_of_input) {
var data = [];
if ($(this).val().length > 0) {
data['search'] = $(this).val();
$('.main .chatbox').addClass('searching_chat_message');
}
if ($(".main .chatbox").attr('group_id') !== undefined) {
data['group_id'] = $(".main .chatbox").attr('group_id');
} else if ($(".main .chatbox").attr('user_id') !== undefined) {
data['user_id'] = $(".main .chatbox").attr('user_id');
}
load_conversation(data);
}
});
$("body").on("click", ".main .reload_conversation", function(e) {
$('.main .middle .search_messages').hide();
var data = [];
if ($(".main .chatbox").attr('group_id') !== undefined) {
data['group_id'] = $(".main .chatbox").attr('group_id');
} else if ($(".main .chatbox").attr('user_id') !== undefined) {
data['user_id'] = $(".main .chatbox").attr('user_id');
}
load_conversation(data);
});
$("body").on("click", ".main .share_file", function(e) {
open_column('second');
var content = {
'share_file': $(this).attr('file_name'),
'scrollToBottom': true,
};
send_message(content);
});
$("body").on("click", ".main .share_user_location", function(e) {
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function(position) {
var content = {
'share_user_location': true,
'latitude': position.coords.latitude,
'longitude': position.coords.longitude,
'scrollToBottom': true,
};
send_message(content);
}, function(error) {
alert("Error getting location: " + error.message);
});
} else {
alert("Geolocation is not supported by your browser.");
}
});
function highlight_message(message_id) {
var message_element = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+message_id+'"]');
if (message_element.length > 0) {
var scroll_to_position = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+message_id+'"]')[0].offsetTop;
scroll_to_position = scroll_to_position-10;
message_element.addClass('highlight');
$('.main .chatbox > .contents > .chat_messages').animate({
scrollTop: scroll_to_position
}, 1500);
setTimeout(function() {
message_element.removeClass('highlight');
}, 5000);
}
}
$("body").on('click', '.main .chatbox .toggle_switch_user', function(e) {
if (!$('.main .chatbox > .header > .switch_user').hasClass('open')) {
$('.main .middle .search_messages').hide();
}
$('.main .chatbox > .header > .switch_user').toggleClass('open');
$('.main .chatbox > .header > .switch_user > div.search_users > .search > div > input').trigger('focus');
});
$("body").on('click', '.main .switch_user_id', function(e) {
if ($(this).attr('user_id') !== undefined) {
$('.main .chatbox > .header > .switch_user > .user_id > input').val($(this).attr('user_id'));
if ($(this).find('.image > img').attr('src') !== undefined) {
$('.main .chatbox > .header > .switch_user > .username').text($(this).find('.title').text());
if ($(this).attr('user_id') === $('.logged_in_user_id').text()) {
$('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image').html('');
} else {
$('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image').html('
');
}
}
$('.main .chatbox > .header > .switch_user').removeClass('open');
}
});
$("body").on("keyup", ".main .chatbox > .header > .switch_user > div.search_users > .search > div > input", function(e) {
if (e.which == 13) {
var keyword = $(this).val();
if ($(".main .chatbox").attr('group_id') !== undefined && keyword.length > 0) {
var user_info = '';
var post_data = {
load: 'group_members_mentions',
search: keyword,
group_id: $(".main .chatbox").attr('group_id')
};
$('.main .chatbox > .header > .switch_user > div.search_users > .list > ul').html('');
if (user_csrf_token !== null) {
post_data["csrf_token"] = user_csrf_token;
}
if (user_login_session_id !== null && user_access_code !== null && user_session_time_stamp !== null) {
post_data["login_session_id"] = user_login_session_id;
post_data["access_code"] = user_access_code;
post_data["session_time_stamp"] = user_session_time_stamp;
}
$.ajax({
type: 'POST',
url: api_request_url,
data: post_data,
async: true
}).done(function (data) {
if (isJSON(data)) {
data = $.parseJSON(data);
if (Object.keys(data).length > 0) {
$.each(data, function(key, val) {
user_info = '';
user_info += '
';
user_info += ''+data[key].name+'';
user_info += ' ';
$('.main .chatbox > .header > .switch_user > div.search_users > .list > ul').append(user_info);
});
}
}
});
}
}
});
function get_message_id(find) {
var message_ids = [];
var message_id = 0;
if (find !== undefined && find === 'last_seen_by_recipient') {
var all_messages = $('.main .chatbox > .contents > .chat_messages > ul > li.seen_by_recipient');
find = 'last';
} else {
var all_messages = $('.main .chatbox > .contents > .chat_messages > ul > li');
}
all_messages.each(function() {
if ($(this).attr('message_id') != undefined && !$(this).hasClass('skip_message')) {
message_ids.push($(this).attr('message_id'));
}
});
if (find !== undefined && find === 'last') {
message_ids.sort(function(a, b) {
return b-a;
});
} else {
message_ids.sort(function(a, b) {
return a-b;
});
}
if (message_ids[0] !== undefined) {
message_id = message_ids[0];
}
return message_id;
}
$("body").on('click', '.send_sticker', function(e) {
var content = {
'sticker': $(this).attr('sticker'),
'sticker_pack': $(this).attr('sticker_pack'),
'scrollToBottom': true,
};
send_message(content);
});
$("body").on('click', '.add_emoji', function(e) {
$('#message_editor').summernote('restoreRange');
var emojiClass = 'emoji_icon emoji-'+$(this).attr('emoji');
var emoji_tag = " ";
emoji_tag += " ";
var emoji_tag = "
";
$('#message_editor').summernote('pasteHTML', emoji_tag);
});
$("body").on('click', '.detach_message', function(e) {
$('.main .attached_message_id > input').val('0');
$('.main .chatbox > .footer .attached_message').hide();
$('#message_editor').summernote('restoreRange');
});
$("body").on('click', '.attach_message', function(e) {
$('.main .chatbox > .footer .attached_message > .attached_message_preview > div.content > .right').hide();
var message_id = $(this).attr('message_id');
var send_by = $(this).parents('.message').find('.header .send_by').text();
var content = $(this).parents('.message').find('.message_content').html();
var thumbnail = $(this).parents('.message').find('.files .preview_image').attr('src');
if (content === undefined || content.length === 0) {
content = $(this).parents('.message').attr('message_label');
}
if (thumbnail !== undefined) {
thumbnail = '
';
$('.main .chatbox > .footer .attached_message > .attached_message_preview > div.content > .right > .thumbnail').html(thumbnail);
$('.main .chatbox > .footer .attached_message > .attached_message_preview > div.content > .right').show();
}
$('.main .attached_message_id > input').val(message_id);
$('.main .chatbox > .footer .attached_message > .attached_message_preview > div.content > .left > .send_by').replace_text(send_by);
$('.main .chatbox > .footer .attached_message > .attached_message_preview > div.content > .left > .text').html(content);
$('.main .chatbox > .footer .attached_message').show();
$('#message_editor').summernote('restoreRange');
});
function send_message(content) {
var data = new FormData();
var empty_message = false;
var message = gif_url = '';
var files_attached = false;
var attached_media_type;
data.append("add",
"message");
typing_indicator('reset');
$('.main .middle .chatbox > .alert_message').hide();
close_module('.grid_list',
'.chatbox > .footer');
$('.message_editor .note-editor.note-frame .note-editing-area .note-editable').removeClass('highlight');
if ($('.main .chatbox').attr('group_id') !== undefined) {
data.append("group_id", $('.main .chatbox').attr('group_id'));
} else if ($('.main .chatbox').attr('user_id') !== undefined) {
data.append("user_id", $('.main .chatbox').attr('user_id'));
} else {
return false;
}
if (content !== undefined) {
$.each(content, function(key, value) {
data.append(key, value);
});
if (content.sticker !== undefined || content.share_user_location !== undefined || content.audio_message !== undefined || content.share_file !== undefined || content.screenshot !== undefined) {
empty_message = true;
}
} else {
if (!$('#message_editor').summernote('isEmpty')) {
message = $('#message_editor').summernote('code');
}
data.append("message", message);
if ($('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_url').val().length !== 0) {
var attached_media_url = $('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_url').val();
var attached_media_type = $('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_type').val();
if (attached_media_type === 'gif') {
gif_url = attached_media_url;
data.append("gif_url", gif_url);
} else {
data.append(attached_media_type, attached_media_url);
}
empty_message = true;
} else if ($(".file_attachments").length !== 0) {
var files = [];
var file_index = 0;
$(".file_attachments").each(function() {
files = $(this).get(0).files;
for (var i = 0; i < files.length; i++) {
var file_identifier = (files[i].name.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, ''))+'_'+files[i].lastModified;
var check_removed = $(".attachments li.removed[file_identifier='"+file_identifier+"']");
if (check_removed.length == 0) {
data.append("file_attachments["+file_index+"]", files[i]);
file_index = file_index+1;
files_attached = true;
}
}
});
empty_message = true;
}
$('.main .chatbox > .footer > .attachments > div > .files > ul').html('');
$('.main .chatbox > .footer > .grid_list > div > .results > div > ul > li').removeClass('selected');
deattach_media();
$('.attachments > div > .attached_files > form').html('');
}
var characters = message.replace(/(<([^>]+)>)/ig,
"");
var totalCharacters = characters.length;
var min_message_length = 1;
if ($('.main .chatbox > .footer > .editor').attr('min_message_length') !== undefined) {
min_message_length = parseInt($('.main .chatbox > .footer > .editor').attr('min_message_length'));
if (isNaN(min_message_length)) {
min_message_length = 1;
}
}
if (totalCharacters === 0) {
if (message.match(/
]*src="[^"]*"[^>]*>/gm)) {
totalCharacters = message.match(/
]*src="[^"]*"[^>]*>/gm).length;
}
}
if (totalCharacters < min_message_length && !empty_message) {
$('.message_editor .note-editor.note-frame .note-editing-area .note-editable').addClass('highlight');
return false;
} else {
var pending_message_identifier = 'pending_'+RandomString(6);
var sample_message_alignment = '';
var sample_message = message;
if (content !== undefined && content.share_user_location != undefined) {
sample_message = language_string('sharing_your_location');
}
if (attached_media_type !== undefined && attached_media_type === 'video_url') {
if (message.length === 0) {
sample_message = language_string('sharing_video');
}
}
var send_sample_data = {
"messages": [{
"class": 'sample_message own_message '+pending_message_identifier,
"image": $('.logged_in_user_avatar').attr('src'),
"posted_by": $('.logged_in_user_name').text(),
"name_color": $('.logged_in_user_name_color').text(),
"sample_data": true,
"content": sample_message,
}],
"append": true
};
if (content !== undefined && content.scrollToBottom !== undefined) {
send_sample_data['scrollToBottom'] = true;
} else if (content === undefined) {
send_sample_data['scrollToBottom'] = true;
}
if (system_variable('own_message_alignment') === 'right') {
sample_message_alignment = ' align_right';
}
$('#message_editor').summernote('code', '');
if ($('.main .chatbox').attr('group_id') !== undefined) {
if ($('.main .chatbox > .header > .switch_user').length > 0) {
if ($('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image > img').length > 0) {
send_sample_data.messages[0].image = $('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image > img').attr('src');
send_sample_data.messages[0].posted_by = $('.main .chatbox > .header > .switch_user > .username').text();
var send_as_user_id = $('.main .chatbox > .header > .switch_user > .user_id > input').val();
if (send_as_user_id.length > 0 && send_as_user_id !== '0') {
data.append('send_as_user_id', send_as_user_id);
if (system_variable('message_alignment') === 'right') {
sample_message_alignment = ' align_right';
} else {
sample_message_alignment = '';
}
}
}
}
}
send_sample_data.messages[0].class += sample_message_alignment;
if (gif_url.length !== 0) {
send_sample_data.messages[0].class = send_sample_data.messages[0].class+' gif';
send_sample_data.messages[0].attachments = new Array();
send_sample_data.messages[0].attachments[0] = {
"image": gif_url,
"original": gif_url,
};
} else if (content !== undefined) {
if (content.sticker != undefined && content.sticker_pack != undefined) {
send_sample_data.messages[0].content = '';
send_sample_data.messages[0].class = send_sample_data.messages[0].class+' sticker';
var sticker_url = baseurl+'assets/files/stickers/'+content.sticker_pack+'/'+content.sticker;
send_sample_data.messages[0].attachments = new Array();
send_sample_data.messages[0].attachments[0] = {
"image": sticker_url,
"original": sticker_url,
};
} else if (content.screenshot != undefined) {
send_sample_data.messages[0].content = '';
send_sample_data.messages[0].class = send_sample_data.messages[0].class+' screenshot';
send_sample_data.messages[0].attachments = new Array();
send_sample_data.messages[0].attachments[0] = {
"image": content.screenshot,
"original": content.screenshot,
};
} else if (content.audio_message != undefined && content.blob != undefined) {
send_sample_data.messages[0].content = '';
send_sample_data.messages[0].attachment_type = 'audio_message';
send_sample_data.messages[0].class = send_sample_data.messages[0].class+' audio_message';
var audioURL = window.URL.createObjectURL(content.blob);
send_sample_data.messages[0].attachments = new Array();
send_sample_data.messages[0].attachments[0] = {
"audio_file": audioURL,
"file_type": 'audio/webm',
};
}
} else if (files_attached) {
send_sample_data.messages[0].attachments = new Array();
send_sample_data.messages[0].attachments[0] = {
"file_name": language_string('uploading_files'),
"file_icon": baseurl+'assets/files/defaults/uploading_files.png',
"subtitle": "0%",
};
}
if ($('.main .attached_message_id > input').val().length !== 0) {
data.append("attach_message", $('.main .attached_message_id > input').val());
}
load_messages(send_sample_data);
var pending_message_element = $('.main .chatbox > .contents > .chat_messages > ul > li.'+pending_message_identifier);
if ($('.main .chatbox > .contents > .chat_messages > ul > li > div > .left > .selector').length > 0) {
$('.main .chatbox .selector').removeClass('multi_selection');
$('.main .chatbox .selector').addClass('d-none');
}
if (user_csrf_token !== null) {
data.append("csrf_token", user_csrf_token);
}
if (user_login_session_id !== null && user_access_code !== null && user_session_time_stamp !== null) {
data.append("login_session_id", user_login_session_id);
data.append("access_code", user_access_code);
data.append("session_time_stamp", user_session_time_stamp);
}
$.ajax({
type: 'POST',
url: api_request_url,
xhr: function() {
var xhr = new window.XMLHttpRequest();
if (files_attached) {
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = ((evt.loaded / evt.total) * 100);
pending_message_element.find('.file_details > .subtitle').text(parseInt(percentComplete)+'%');
}
},
false);
}
return xhr;
},
data: data,
cache: false,
contentType: false,
processData: false,
async: true,
success: function(data) {}
}).done(function(data) {
if (isJSON(data)) {
data = $.parseJSON(data);
if (data.alert !== undefined) {
$('.main .middle .chatbox > .alert_message > div > .message').removeClass('error warning success');
if (data.alert.type !== undefined) {
$('.main .middle .chatbox > .alert_message > div > .message').addClass(data.alert.type);
}
$('.main .middle .chatbox > .alert_message > div > .message').replace_text(data.alert.message);
$('.main .middle .chatbox > .alert_message').show();
if (alert_message_time_interval !== null) {
clearTimeout(alert_message_time_interval);
}
alert_message_time_interval = setTimeout(function() {
$('.main .middle .chatbox > .alert_message').hide();
alert_message_time_interval = null;
}, 3000);
}
if (data.refresh !== undefined) {
location.reload(true);
} else if (data.message !== undefined) {
data.message.append = true;
load_messages(data.message);
}
pending_message_element.remove();
} else {
console.log('ERROR : ' + data);
pending_message_element.addClass('failed');
setTimeout(function() {
pending_message_element.remove();
}, 2000);
}
}) .fail(function(qXHR, textStatus, errorThrown) {
console.log('ERROR : ' + errorThrown);
pending_message_element.addClass('failed');
setTimeout(function() {
pending_message_element.remove();
}, 2000);
});
$('.main .attached_message_id > input').val('0');
$('.main .chatbox > .footer .attached_message').hide();
$('.chatbox > .footer > .attachments').removeClass('hasAttachments');
if (focus_on_send_button) {
$('#message_editor').summernote('focus');
}
}
}
$('.main .chatbox').on('drop', function (e) {
e.stopPropagation();
e.preventDefault();
if (!$('.main .chatbox').hasClass('d-none') && !$('.main .chatbox > .footer').hasClass('d-none')) {
var dropped_files = e.originalEvent.dataTransfer.files;
var identifier = 'user_input_' + RandomString(6);
var new_file_input = '';
$('.attachments > div > .attached_files > form').append(new_file_input);
$('.'+identifier).hide();
$('.'+identifier).prop('files', dropped_files);
$('.'+identifier).trigger('change');
}
});
$("body").on('click', '.attach_file', function(e) {
var identifier = 'user_input_' + RandomString(6);
var new_file_input = '';
$('.attachments > div > .attached_files > form').append(new_file_input);
$('.'+identifier).hide();
$('.'+identifier).trigger('click');
});
$("body").on('click', '.attach_media ', function(e) {
$(this).parent().find('li').removeClass('selected');
$(this).addClass('selected');
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_image > img').removeAttr('src');
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_image > img').attr('src', $(this).find('img').attr('src'));
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_url').val($(this).attr('media_url'));
var attached_media_type = 'gif';
if ($(this).attr('media_type') !== undefined) {
attached_media_type = $(this).attr('media_type');
}
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_type').val(attached_media_type);
$('.main .chatbox > .footer > .editor > div > .attached_media').removeClass('d-none');
});
$("body").on('click', '.deattach_media ', function(e) {
deattach_media();
});
function deattach_media() {
$('.main .chatbox > .footer > .grid_list > div > .results > div > ul > li.attach_media').removeClass('selected');
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_image > img').removeAttr('src');
$('.main .chatbox > .footer > .editor > div > .attached_media').addClass('d-none');
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input').val('');
}
$("body").on('change', '.file_attachments', function(e) {
open_module('.attachments', '.chatbox > .footer', true);
var file = '';
$('.chatbox > .footer > .attachments').addClass('hasAttachments');
for (var i = 0; i < $(this).get(0).files.length; ++i) {
var filesize = ($(this).get(0).files[i].size/1024/1024).toFixed(2);
var extension = $(this).get(0).files[i].type;
var file_identifier = ($(this).get(0).files[i].name.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, ''))+'_'+$(this).get(0).files[i].lastModified;
file = '';
file += '';
if (extension === 'image/jpeg' || extension === 'image/webp' || extension === 'image/png' || extension === 'image/gif' || extension === 'image/bmp' || extension === 'image/x-ms-bmp') {
var preview = URL.createObjectURL($(this).get(0).files[i]);
file += '';
file += '
';
file += '';
} else {
file += '';
}
file += '';
file += '';
file += ''+$(this).get(0).files[i].name+'';
file += ''+filesize+' mb';
file += '';
file += '';
file += '';
file += ' ';
$('.main .chatbox > .footer > .attachments > div > .files > ul').append(file);
deattach_media();
}
});
$("body").on('click', '.main .chatbox > .footer > .attachments > div > .files > ul > li > .remove_file', function(e) {
$(this).parent('li').addClass('d-none removed');
if ($('.main .chatbox > .footer > .attachments > div > .files > ul > li:visible').length === 0) {
open_module('.attachments', '.chatbox > .footer');
$('.chatbox > .footer > .attachments').removeClass('hasAttachments');
}
});
$("body").on('click', '.load_conversation', function(event) {
if (!$(event.target).hasClass('prevent_default') && !$(event.target).parent().hasClass('prevent_default') || $(this).hasClass('force_request')) {
var load = [];
shared_screenshot_BlobIds = [];
if ($(this).attr('group_id') !== undefined) {
load['group_id'] = $(this).attr('group_id');
if (system_variable('load_group_info_on_group_load') === 'enable') {
if ($(window).width() > 992) {
load['load_group_info'] = true;
}
}
$('.main .side_navigation .menu_items').find('li.realtime_module[module="groups"] > .menu_item > .unread').html('');
} else if ($(this).attr('user_id') !== undefined) {
load['user_id'] = $(this).attr('user_id');
if (system_variable('show_profile_on_pm_open') === 'enable') {
if ($(window).width() > 992) {
load['load_user_info'] = true;
}
}
$('.main .side_navigation .menu_items').find('li.realtime_module[module="private_conversations"] > .menu_item > .unread').html('');
}
$('.main .middle .search_messages').hide();
if ($(this).attr('search') !== undefined) {
load['search'] = $(this).attr('search');
if ($(this).attr('search_message_id') !== undefined) {
load['search_message_id'] = true;
}
}
if ($(this).hasClass('info_panel_message_button')) {
load['hide_infopanel_onload'] = true;
}
if ($(this).hasClass('attend_video_call')) {
if ($(this).hasClass('audio_only_chat')) {
load['open_audio_call'] = true;
} else {
load['open_video_call'] = true;
}
}
if (!$('.main .chatbox > .footer > .editor .audio_recorder_box').hasClass('d-none')) {
$('.cancel_recording').trigger('click');
}
load_conversation(load);
}
});
function load_conversation(load) {
$('.main .chatbox > .contents > .chat_messages').addClass('loading');
typing_indicator('reset');
var browser_title = default_meta_title;
var browser_address_bar = baseurl;
var hide_infopanel_onload = true;
if (load.prepend_messages === undefined && load.append_messages === undefined) {
if (system_variable('video_chat') !== 'disable') {
if (video_chat_available) {
exit_video_chat();
}
}
open_column('second');
$('.main .chatbox > .header > .icons').addClass('d-none');
$('.main .chatbox > .contents > .error_message').hide();
if ($(window).width() <= 991 && $(window).width() >= 770.98) {
if (load.hide_infopanel_onload !== undefined) {
hide_infopanel_onload = false;
}
}
$('.main .chatbox > .info_box').html('');
$('.main .chatbox > .info_box').hide();
close_chat_header_window('all');
$('.main .chatbox > .header > .image').show();
$('.main .chatbox > .header').removeClass('d-none');
$('.main .chatbox > .header').removeClass('view_info');
$('.main .chatbox > .header > .image').removeClass('get_info');
$('.main .chatbox > .header > .heading').removeClass('get_info');
$(".main .chatbox > .header > .icons > span.delete_multiple_messages").addClass('d-none');
$(".main .chatbox > .header > .image > .thumbnail").removeClass('img_loaded');
$(".main .chatbox > .header > .image > .thumbnail > img").attr('src', baseurl+'assets/files/defaults/loading.gif');
$(".main .chatbox > .header > .heading > .title").replace_text(language_string('loading'));
$('.main .middle > .content > div').addClass('d-none');
$('.main .middle > .content > .chatbox').removeClass('d-none');
$('.main .chatbox > .footer').removeClass('d-none');
$('.main .middle').removeClass('col-lg-5');
$('.main .middle').removeClass('col-lg-6');
$('.main .middle').addClass('col-lg-9');
if (hide_infopanel_onload) {
$('.main .info_panel').addClass('d-none');
}
$('.main .formbox').addClass('d-none');
$('.main .chatbox > .contents > .chat_messages > ul').html('');
$('.main .chatbox > .header > .switch_user').addClass('d-none');
$('.main .chatbox > .header .toggle_switch_user').addClass('d-none');
$('.main .chatbox > .header > .switch_user').removeClass('open');
$('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image').html('');
$('.main .chatbox > .header > .switch_user > div.search_users > .search > div > input').val('');
$('.main .chatbox > .header > .switch_user > div.search_users > .list > ul').html('');
$('.main .chatbox > .header > .switch_user > .user_id > input').val('0');
$('.main .chatbox > .header > .switch_user > .username').text('');
$(".main .chatbox > .header > .message_selection").find('input').prop('checked', false);
$(".main .chatbox > .header > .message_selection").addClass('d-none');
$(".main .chatbox > .contents > .chat_messages").removeClass('multi_selection');
$(".main .chatbox > .header > .icons .toggle_checkbox").addClass('d-none');
$('.main .middle .confirm_box > .error').hide();
$('.main .middle .confirm_box').addClass('d-none');
$('.main .middle .chatbox > .alert_message').hide();
$('.main .chatbox > .header .join_video_call_icon').removeClass('online');
$('.main .chatbox > .header .join_video_call_icon').addClass('d-none');
$('.main .chatbox > .header .join_audio_call_icon').removeClass('online');
$('.main .chatbox > .header .join_audio_call_icon').addClass('d-none');
if (audio_message_preview !== undefined && audio_message_preview !== null) {
audio_message_preview.pause();
}
}
var data = {
load: "group_messages",
};
if (load.group_id !== undefined) {
data['load'] = "group_messages";
data['group_id'] = load.group_id;
var list_element = $('.main .aside > .site_records > .records > .list > li.group_conversation[group_id="'+load.group_id+'"]');
list_element.find('.title > .unread').html('');
} else if (load.user_id !== undefined) {
data['load'] = "private_chat_messages";
data['user_id'] = load.user_id;
var list_element = $('.main .aside > .site_records > .records > .list > li.private_conversation[user_id="'+load.user_id+'"]');
list_element.find('.title > .unread').html('');
}
if (load.find_message !== undefined) {
data['find_message'] = true;
}
if (load.search !== undefined) {
if (load.search_message_id !== undefined && load.search_message_id) {
data['search_message_id'] = true;
}
data['search'] = load.search;
$('.main .chatbox > .header > .icons > span.reload_conversation').removeClass('d-none');
$('.main .chatbox > .contents > .chat_messages').addClass('searching');
} else {
$('.main .chatbox').removeClass('chat_message_selection searching_chat_message');
$('.main .middle .search_messages > div > .search > div > input').val('');
$('.main .chatbox > .header > .icons > span.reload_conversation').addClass('d-none');
$('.main .chatbox > .contents > .chat_messages').removeClass('searching');
}
if (load.message_id_less_than !== undefined) {
data['message_id_less_than'] = load.message_id_less_than;
}
if (load.prepend_messages === undefined && load.append_messages === undefined) {
close_module('.grid_list', '.chatbox > .footer');
close_module('.attachments', '.chatbox > .footer');
$(".main .chatbox > .footer").hide();
$('.main .attached_message_id > input').val('0');
$('.main .chatbox > .footer .attached_message').hide();
if ($('.main .middle .conversation_loader > ul > li').length === 0) {
$('.main .middle .conversation_loader > ul').html(loader_content());
}
$('.main .middle .conversation_loader').removeClass('error').show();
}
if (load.message_id !== undefined) {
data['message_id'] = load.message_id;
}
if (user_csrf_token !== null) {
data["csrf_token"] = user_csrf_token;
}
if (user_login_session_id !== null && user_access_code !== null && user_session_time_stamp !== null) {
data["login_session_id"] = user_login_session_id;
data["access_code"] = user_access_code;
data["session_time_stamp"] = user_session_time_stamp;
}
load_conversation_ajax_request(data, load);
}
function load_conversation_ajax_request(data, load) {
var old_data = data;
var browser_title = default_meta_title;
var browser_address_bar = baseurl;
load_messages_request = $.ajax({
type: 'POST',
url: api_request_url,
data: data,
async: true,
beforeSend: function() {
if (load_messages_request != null) {
load_messages_request.abort();
load_messages_request = null;
}
if (load_group_header_request != null) {
load_group_header_request.abort();
load_group_header_request = null;
}
if (load_messages_reload_timeout !== null) {
clearTimeout(load_messages_reload_timeout);
load_messages_reload_timeout = null;
}
},
success: function(data) {}
}).done(function(data) {
if (isJSON(data)) {
data = $.parseJSON(data);
load_messages_reload_loop = 0;
if (load.prepend_messages === undefined && load.append_messages === undefined) {
if (data.error_message !== undefined) {
$('.main .chatbox > .contents > .error_message > div > div > .image').html('').hide();
$('.main .chatbox > .contents > .error_message > div > div > .text > .title').replace_text(data.error_message.title);
$('.main .chatbox > .contents > .error_message > div > div > .text > .subtitle').replace_text(data.error_message.subtitle);
if (data.error_message.image !== undefined) {
var error_image = '
';
$('.main .chatbox > .contents > .error_message > div > div > .image').html(error_image).show();
}
$('.main .chatbox > .contents > .error_message').show();
}
if (data.info_box !== undefined) {
var info_box = '
');
} else {
$(".main .middle .chatbox > .background_image").html('');
}
if (data.loaded.group_id !== undefined) {
$(".main .chatbox").removeAttr('user_id');
$(".main .chatbox").attr('group_id', data.loaded.group_id);
if ($('.main .chatbox').attr('group_id') !== 'all' && $('.main .chatbox > .header > .switch_user').length > 0) {
var default_user_image = $('.logged_in_user_avatar').attr('src');
default_user_image = "
';
$('.main .chatbox > .header > .switch_user').removeClass('d-none');
$('.main .chatbox > .header > .switch_user > .username').text($('.logged_in_user_name').text());
$('.main .chatbox > .header > .switch_user > .current_selected_user > .user_image').html('');
$('.main .chatbox > .header > .switch_user > .user_id > input').val('0');
$('.main .chatbox > .header .toggle_switch_user').removeClass('d-none');
}
} else if (data.loaded.user_id !== undefined) {
$(".main .chatbox").removeAttr('group_id');
$(".main .chatbox").attr('user_id', data.loaded.user_id);
} else {
$(".main .chatbox").removeAttr('user_id');
$(".main .chatbox").removeAttr('group_id');
}
if (data.loaded.video_chat !== undefined && data.loaded.video_chat === true) {
$('.main .chatbox > .header .join_video_call_icon').removeClass('d-none');
if (data.loaded.video_chat_online !== undefined && data.loaded.video_chat_online === true) {
$('.main .chatbox > .header .join_video_call_icon').addClass('online');
}
if (load.open_video_call !== undefined) {
$('.main .chatbox > .header .join_video_call_icon').trigger('click');
}
}
if (data.loaded.audio_chat !== undefined && data.loaded.audio_chat === true) {
$('.main .chatbox > .header .join_audio_call_icon').removeClass('d-none');
if (data.loaded.audio_chat_online !== undefined && data.loaded.audio_chat_online === true) {
$('.main .chatbox > .header .join_audio_call_icon').addClass('online');
}
if (load.open_audio_call !== undefined) {
$('.main .chatbox > .header .join_audio_call_icon').trigger('click');
}
}
if (data.loaded.messaging !== undefined && data.loaded.messaging === true) {
$(".main .chatbox > .footer").show();
} else {
$(".main .chatbox > .footer").hide();
}
$(".main .chatbox > .footer .messenger_features").show();
if (data.loaded.disable_features !== undefined) {
$.each(data.loaded.disable_features, function(feature_index, feature) {
if (feature === 'voice_message') {
if (!$('.main .chatbox > .footer > .editor .audio_recorder_box').hasClass('d-none')) {
$('.cancel_recording').trigger('click');
}
}
if (feature === 'attach_files') {
$('.main .chatbox > .footer > .attachments > div > .files > ul').html('');
$('.attachments > div > .attached_files > form').html('');
$('.chatbox > .footer > .attachments').removeClass('hasAttachments');
}
if (feature === 'gifs') {
deattach_media();
}
feature = ".main .chatbox > .footer .messenger_features."+feature+"_feature";
$(feature).hide();
});
}
}
}
if (load.load_group_info !== undefined || load.load_user_info !== undefined) {
$('.main .chatbox > .header > .heading > .view_info').trigger('click');
}
if (load.prepend_messages !== undefined) {
data.prepend_messages = true;
} else {
data.scrollToBottom = true;
}
load_messages(data);
} else {
console.log('ERROR : ' + data);
}
if (load.prepend_messages === undefined && load.append_messages === undefined) {
if (browser_title !== undefined) {
change_browser_title(browser_title);
history.pushState({}, null, browser_address_bar);
}
}
$('.main .middle .conversation_loader').removeClass('error').hide();
$('.main .chatbox > .contents > .chat_messages').removeClass('loading EndResults');
}) .fail(function(qXHR, textStatus, errorThrown) {
if (qXHR.statusText !== 'abort' && qXHR.statusText !== 'canceled') {
console.log('ERROR : '+errorThrown);
console.log('PAGE CONTENT : ' + data);
$('.main .middle .conversation_loader').addClass('error');
if (load.prepend_messages === undefined && load.append_messages === undefined) {
load_messages_reload_loop = load_messages_reload_loop+1;
if (load_messages_reload_loop < 5) {
load_messages_reload_timeout = setTimeout(function() {
load_conversation_ajax_request(old_data, load)
}, 3500);
} else {
load_messages_reload_loop = 0;
}
}
}
$('.main .chatbox > .contents > .chat_messages').removeClass('loading EndResults');
});
}
function load_messages(data) {
var messages = '';
var highlight_message_element = false;
var highlight_message_id = 0;
var total_messages = 0
if (data.loaded !== undefined) {
if (data.loaded.group_id !== undefined && data.loaded.group_id != $('.main .chatbox').attr('group_id')) {
data.messages = [];
} else if (data.loaded.user_id !== undefined && data.loaded.user_id != $('.main .chatbox').attr('user_id')) {
data.messages = [];
}
}
if (data.messages !== undefined) {
total_messages = data.messages.length;
$.each(data.messages, function(key, val) {
var message = data.messages[key];
var add_to_list = true;
if (message.message_id !== undefined) {
if ($('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+message.message_id+'"]').length > 0) {
add_to_list = false;
}
if (message.highlight_message !== undefined) {
highlight_message_element = true;
highlight_message_id = message.message_id;
}
}
if (add_to_list) {
if (message.message_label === undefined) {
message.message_label = 'Message';
}
if (message.message_id === undefined) {
messages = messages+'
';
info_box += '
';
$('.main .chatbox > .info_box').html(info_box);
$('.main .chatbox > .info_box').show();
}
if (data.loaded !== undefined) {
if (data.error_message === undefined) {
$('.main .chatbox > .header > .icons').removeClass('d-none');
}
if (data.loaded.react_messages !== undefined && data.loaded.react_messages) {
$(".main .chatbox").attr('react_messages', true);
} else {
$(".main .chatbox").removeAttr('react_messages');
}
if (data.loaded.view_info !== undefined) {
$('.main .chatbox > .header').addClass('view_info');
$('.main .chatbox > .header > .image').addClass('get_info');
$('.main .chatbox > .header > .heading').addClass('get_info');
}
if (data.loaded.browser_title !== undefined) {
browser_title = data.loaded.browser_title;
}
if (data.loaded.browser_address_bar !== undefined) {
browser_address_bar = data.loaded.browser_address_bar;
}
if (data.loaded.title !== undefined) {
$(".main .chatbox > .header > .heading > .title").replace_text(data.loaded.title);
}
if (data.loaded.subtitle !== undefined) {
$(".main .chatbox > .header > .heading > .subtitle").replace_text(data.loaded.subtitle);
} else {
$(".main .chatbox > .header > .heading > .subtitle").replace_text('');
}
if (data.loaded.image !== undefined) {
$(".main .chatbox > .header > .image > .thumbnail").addClass('img_loaded');
$(".main .chatbox > .header > .image > .thumbnail > img").attr('src', data.loaded.image);
$(".main .chatbox > .header > .image > .thumbnail > img").on('error', function() {
$(this).attr("src", blur_img_url);
});
}
if (data.loaded.group_header !== undefined) {
if (data.loaded.group_id !== undefined) {
load_group_header(data.loaded.group_id);
}
}
if (data.loaded.multi_select !== undefined && data.loaded.multi_select) {
$(".main .chatbox > .header > .message_selection").removeClass('d-none');
$(".main .chatbox > .header > .icons .toggle_checkbox").removeClass('d-none');
//$(".main .chatbox > .contents > .chat_messages").addClass('multi_selection');
}
if (data.loaded.background_image !== undefined) {
$(".main .middle .chatbox > .background_image").html(''+data.info_box.content+'
';
info_box += '
تعليقات
إرسال تعليق