';
messages = messages+'
';
if (data.loaded !== undefined && data.loaded.multi_select !== undefined && data.loaded.multi_select) {
messages = messages+'
';
}
if (message.image !== undefined) {
messages = messages+'
';
messages = messages+'
';
messages = messages+'';
}
messages = messages+'
';
messages = messages+'
';
messages = messages+'';
messages = messages+'
';
messages = messages+'';
}
});
}
var append_messages = false;
if (data.append !== undefined || data.append_messages !== undefined) {
append_messages = true;
$('.main .chatbox > .contents > .chat_messages > ul').prepend(messages);
} else if (data.prepend_messages !== undefined) {
$('.main .chatbox > .contents > .chat_messages > ul').append(messages);
} else {
$('.main .chatbox > .contents > .chat_messages > ul').html(messages);
$('.main .chatbox .selector').addClass('d-none');
}
if (!$('.main .chatbox .message_selection > .selector').is(":visible")) {
$('.main .chatbox .selector').addClass('d-none');
}
append_read_more();
set_message_dates(append_messages);
generate_user_location();
if (data.scrollToBottom !== undefined && total_messages > 0) {
$('.main .chatbox > .contents > .chat_messages').scrollTop(0);
} else if (highlight_message_element) {
highlight_message(highlight_message_id);
}
}
$('body').on('click', ".main .chatbox > .header > .icons .toggle_checkbox", function(e) {
if ($('.main .chatbox .selector').length > 0) {
$('.main .chatbox .selector').toggleClass('d-none multi_selection');
$('.main .chatbox').toggleClass('chat_message_selection');
}
if ($('.main .chatbox > .header > div > .selector').hasClass('d-none')) {
$('.main .chatbox .selector > input[type="checkbox"]').prop('checked', false);
$(".main .chatbox > .header > .icons > span.delete_multiple_messages").addClass('d-none');
}
});
function remove_messages(data) {
var message_element = '';
var noerror = true;
if (data !== undefined) {
if (data.conversation_type !== undefined) {
if (data.conversation_type === 'group_chat' && $(".main .chatbox").attr('group_id') === undefined) {
noerror = false;
} else if (data.conversation_type === 'private_chat' && $(".main .chatbox").attr('user_id') === undefined) {
noerror = false;
}
}
if (noerror && data.message_id !== undefined) {
if (Array.isArray(data.message_id)) {
$.each(data.message_id, function(index, message_id) {
message_element = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+message_id+'"]');
message_element.remove();
});
} else {
message_element = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+data.message_id+'"]');
message_element.remove();
}
}
}
}
function generate_user_location() {
var jsFileUrl = 'https://unpkg.com/leaflet/dist/leaflet.js';
if (!window.isLeafletLoaded) {
addCssFile('https://unpkg.com/leaflet/dist/leaflet.css');
$.getScript(jsFileUrl, function() {
window.isLeafletLoaded = true;
generate_user_location_callback();
});
} else {
generate_user_location_callback();
}
}
function generate_user_location_callback() {
if (typeof L !== 'undefined' && typeof L.map === 'function') {
$('.main .chat_messages > ul > li > div > .right > .files > div > .user_location > li > .generate_user_location').each(function() {
$(this).html('
');
$(this).removeClass('generate_user_location');
var latitude = $(this).attr('lat');
var longitude = $(this).attr('long');
var map_link = `https://www.google.com/maps?q=${latitude},${longitude}`;
$(this).find('.map_wrapper > .open_map').addClass('open_link');
$(this).find('.map_wrapper > .open_map').attr('target', '_blank');
$(this).find('.map_wrapper > .open_map').attr('link', map_link);
var mapContainer = $(this).find('.map_wrapper .map')[0];
var map = L.map(mapContainer, {
zoomControl: false
}).setView([latitude, longitude], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
L.marker([latitude, longitude]).addTo(map);
});
}
}
function mention_everyone(realtime_log_id) {
var data = {
add: 'notify_group_members',
realtime_log_id: realtime_log_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;
}
$.ajax({
type: 'POST',
url: api_request_url,
data: data,
async: true,
success: function(data) {}
}).done(function(data) {
if (isJSON(data)) {
data = $.parseJSON(data);
if (data.continue_process !== undefined) {
mention_everyone(realtime_log_id);
}
} else {
console.log('ERROR : ' + data);
}
}) .fail(function(qXHR, textStatus, errorThrown) {
console.log('ERROR : ' + errorThrown);
});
}
function update_message_reactions(data) {
if (data !== undefined) {
var update_reactions = false;
if (data.message_id !== undefined) {
if (data.group_id !== undefined && $(".main .chatbox").attr('group_id') !== undefined) {
if ($(".main .chatbox").attr('group_id') == data.group_id || $(".main .chatbox").attr('group_id') == 'all') {
update_reactions = true;
}
} else if (data.user_ids !== undefined && $(".main .chatbox").attr('user_id') !== undefined) {
update_reactions = true;
}
if (update_reactions) {
var message_element = $('.main .chatbox > .contents > .chat_messages > ul > li[message_id="'+data.message_id+'"]');
var update_content = '';
message_element.find('.message_reactions > .selection > ul > li > .reaction').removeClass('reacted');
if (data.user_reaction !== undefined) {
message_element.find('.message_reactions > .selection > ul > li > .reaction').removeClass('reacted');
var user_reaction_class = '.reaction-'+data.user_reaction;
message_element.find('.message_reactions > .selection > ul > li > .reaction'+user_reaction_class).addClass('reacted');
}
var total_reactions = 0;
if (data.total_reactions !== undefined) {
total_reactions = Object.keys(data.total_reactions).length;
}
if (total_reactions > 0) {
$.each(data.total_reactions, function(reaction, total) {
update_content = update_content+'
';
update_content = update_content+'';
update_content = update_content+''+total+'';
update_content = update_content+'';
});
} else {
if ($(".main .chatbox").attr('react_messages') !== undefined) {
// update_content = update_content+'
';
// update_content = update_content+'';
// update_content = update_content+'';
}
}
message_element.find('.message_reactions > .reactions > ul').html(update_content);
if (total_reactions > 0) {
message_element.find('.message_reactions').removeClass('d-none');
}
}
}
}
}
$('body').on('click', '.main .chatbox .selector.select_all > input', function(e) {
$('.main .chatbox .selector.select_item > input').prop('checked', this.checked).change();
});
$('body').on('change', '.main .chatbox .selector.select_item > input', function(e) {
if ($(".main .chatbox .selector.select_item > input:checked").length > 0) {
$(".main .chatbox > .header > .icons > span.delete_multiple_messages").removeClass('d-none');
} else {
$(".main .chatbox > .header > .icons > span.delete_multiple_messages").addClass('d-none');
}
});
$('.main .chat_messages').on('click', '.message_reactions > .selection > ul > li', function(e) {
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
});
$('.main .chat_messages').on('click', '.message_reactions > .reactions > ul > li > .reaction', function(e) {
if ($(this).parent().parent().parent().parent().find('.selection').hasClass('d-none')) {
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
$(this).parent().parent().parent().parent().find('.selection').removeClass('d-none');
} else {
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
}
});
$('.main').on('click', '.middle', function(e) {
var hide_reaction_selection = true;
if ($(e.target).hasClass('react_to_messages')) {
hide_reaction_selection = false;
} else if ($(e.target).parents('.reactions').hasClass('reactions')) {
hide_reaction_selection = false;
}
if (hide_reaction_selection) {
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
}
});
$('.main .chat_messages').on('click', '.right > .header > .tools > div .dropdown_list > ul > li.react_to_messages', function(e) {
$reaction_element = $(this).parent().parent().parent().parent().parent().parent().find('.message_reactions');
if ($reaction_element.find('.selection').hasClass('d-none')) {
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
$reaction_element.find('.selection').removeClass('d-none');
if ($reaction_element.hasClass('d-none')) {
$reaction_element.addClass('reaction_d-none');
$reaction_element.removeClass('d-none');
}
} else {
if ($reaction_element.hasClass('reaction_d-none')) {
$reaction_element.removeClass('reaction_d-none');
$reaction_element.addClass('d-none');
}
$('.main .chatbox > .contents > .chat_messages .message_reactions > .selection').addClass('d-none');
}
});
function set_message_dates(append_messages = false) {
$('.main .chatbox > .contents > .chat_messages > ul > li.set_message_date').each(function() {
var message_sent_on = '';
if ($(this).find('.date').attr('message_sent_on') !== undefined) {
message_sent_on = $(this).find('.date').attr('message_sent_on');
if (!append_messages) {
$('.main .chatbox > .contents > .chat_messages > ul > li > .date[message_sent_on="'+message_sent_on+'"]').removeClass('show');
$(this).find('.date').addClass('show');
} else {
if ($('.main .chatbox > .contents > .chat_messages > ul > li > .date[message_sent_on="'+message_sent_on+'"]').length < 2) {
$(this).find('.date').addClass('show');
}
}
}
$(this).removeClass('set_message_date');
});
}
function append_read_more() {
var read_more_criteria = 300;
if ($('.main .chatbox > .contents').attr('read_more_criteria') !== undefined) {
read_more_criteria = parseInt($('.main .chatbox > .contents').attr('read_more_criteria'));
if (isNaN(read_more_criteria)) {
read_more_criteria = 300;
}
}
$('.main .chatbox > .contents > .chat_messages > ul > li.has_excerpt').each(function() {
if ($(this).find('div > .right > .content > div > .message_content').outerHeight() >= read_more_criteria) {
$(this).find('div > .right > .content > div > .message_content').css('max-height', read_more_criteria+'px');
$(this).addClass('excerpt');
}
$(this).removeClass('has_excerpt');
});
}
$('.main .chat_messages').on('click', 'li.excerpt .content > div > .read_more_toggle', function(e) {
$(this).parent().find('.message_content').css('max-height', '');
$(this).parents('li.excerpt').removeClass('excerpt');
});
$('.main .chat_messages').on('click', '.play_button', function(e) {
if ($(this).find('i').hasClass('bi-stop-fill')) {
$('.main .chatbox > .contents > .chat_messages .file.audio_preview').removeClass('current_playing');
audio_message_preview.pause();
audio_message_preview.currentTime = 0;
} else {
var audio_tag = $('#audio_message_preview');
audio_tag.find('source').attr('src', $(this).attr('audio'));
if ($(this).attr('mime_type') !== undefined) {
audio_tag.find('source').attr('type', $(this).attr('mime_type'));
} else {
audio_tag.find('source').removeAttr('type');
}
$(".main .chat_messages .audio_controls > div > div > div > .current_timestamp > span").text('00:00');
$(".main .chat_messages .audio_controls > div > div > div > .duration > span").text('00:00');
$(".audio_preview_seekbar").val(0).trigger("input");
$('.main .chatbox > .contents > .chat_messages .file.audio_preview').removeClass('current_playing');
$(this).parents('.audio_preview').addClass('current_playing');
audio_message_preview.pause();
audio_message_preview.load();
audio_message_preview.play();
}
});
audio_message_preview.addEventListener('play', function() {
if (audio_player !== undefined && audio_player !== null) {
audio_player.pause();
}
if (video_preview !== undefined && video_preview !== null) {
video_preview.pause();
}
$('.main .chat_messages .play_button > i').removeClass('bi-stop-fill');
$('.main .chat_messages .play_button > i').addClass('bi-play-fill');
$('.main .chat_messages .current_playing .play_button > i').removeClass('bi-play-fill');
$('.main .chat_messages .current_playing .play_button > i').addClass('bi-stop-fill');
});
audio_message_preview.addEventListener('pause', function() {
$('.main .chat_messages .play_button > i').removeClass('bi-stop-fill');
$('.main .chat_messages .play_button > i').addClass('bi-play-fill');
});
audio_message_preview.addEventListener('ended', function() {
$('.main .chat_messages .play_button > i').removeClass('bi-stop-fill');
$('.main .chat_messages .play_button > i').addClass('bi-play-fill');
});
audio_message_preview.ontimeupdate = function() {
if (isFinite(audio_message_preview.currentTime)) {
var current_timestamp = timestamp_convertor(audio_message_preview.currentTime);
$(".main .chat_messages .current_playing .audio_controls > div > div > div > .current_timestamp > span").text(current_timestamp);
}
if (isFinite(audio_message_preview.duration)) {
var audio_duration = timestamp_convertor(audio_message_preview.duration);
$(".main .chat_messages .current_playing .audio_controls > div > div > div > .duration > span").text(audio_duration);
}
var percentage = (audio_message_preview.currentTime / audio_message_preview.duration) * 100;
if (isFinite(percentage)) {
$(".current_playing .audio_preview_seekbar").val(percentage).trigger("input");
}
};
$('.main').on('mouseup', '.current_playing .audio_preview_seekbar', function(e) {
audio_message_preview.play();
});
$('.main').on('mousedown touchstart', '.current_playing .audio_preview_seekbar', function(e) {
audio_message_preview.pause();
});
$('.main').on('mouseenter', '.chatbox > .contents > .chat_messages.show_timestamp_on_mouseover > ul > li', function(e) {
$(this).find('.header > .tools > .timestamp').addClass('visible');
});
$('.main').on('mouseleave', '.chatbox > .contents > .chat_messages.show_timestamp_on_mouseover > ul > li', function(e) {
$('.chat_messages.show_timestamp_on_mouseover > ul > li .header > .tools > .timestamp').removeClass('visible');
});
$('.main').on('click', '.current_playing .audio_preview_seekbar', function(e) {
var offset = $(this).offset();
var left = (e.pageX - offset.left);
var totalWidth = $(this).width();
var percentage = (left / totalWidth);
var audioTime = audio_message_preview.duration * percentage;
audio_message_preview.currentTime = audioTime;
});
$('.main').on('touchend', '.current_playing .audio_preview_seekbar', function(e) {
var offset = $(this).offset();
var left = (e.changedTouches[0].pageX - offset.left);
var totalWidth = $(this).width();
var percentage = (left / totalWidth);
var audioTime = audio_message_preview.duration * percentage;
audio_message_preview.currentTime = audioTime;
audio_message_preview.play();
});
function getscrenshotBlobId(blob) {
return blob.size.toString();
}
$(document).on('paste', function(event) {
if (!$('.main .chatbox').hasClass('d-none') && !$('.main .chatbox > .footer').hasClass('d-none')) {
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
var blob = null;
for (var i = 0; i < items.length; i++) {
if (items[i].type.indexOf("image") === 0) {
blob = items[i].getAsFile();
break;
}
}
if (blob) {
var blobId = getscrenshotBlobId(blob);
if (shared_screenshot_BlobIds.includes(blobId)) {
console.log("This screenshot has been previously shared.");
return;
}
shared_screenshot_BlobIds.push(blobId);
var reader = new FileReader();
reader.onload = function(event) {
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_image > img').removeAttr('src');
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_image > img').attr('src', event.target.result);
$('.main .chatbox > .footer > .editor > div > .attached_media > .media_url > input.attached_media_url').val(event.target.result);
var attached_media_type = 'screenshot';
$('.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');
};
reader.readAsDataURL(blob);
}
}
});