`;
if (_userid == chatList.fromUserId) {
var k = "";
if (chatList.messageDeliveredDate != null) {
k = '
';
if (chatList.messageReadDate != null) {
k = '
';
}
msghtml += '
' + msg + ' ' + k + '
';
hideinfo = '';
}
else {
msghtml += '
' + msg + '
';
Chat.isPrivate ? hideinfo = 'hidden' : hideinfo = '';
}
var info = '
Info ';
lihtml = chatList.isDelete ? deletemsg : (forward + quote + edit + copy + deletemsg + deleteforeveryone + info + starmsg);
msghtml += `
${msgTime}
`;
}
else if (chatList.toUserId != 0 || !Chat.isPrivate) {
let emojiFontSize = instance.getEmojiFontSize(msg);
msghtml += '
' + fromUserIdhtml + '
';
lihtml = chatList.isDelete ? deletemsg : (forward + quote + copy + deletemsg + starmsg);
msghtml += `
${msgTime}
`;
}
$('.delete-msg').parent('.message-wrapper').css('background-color', '#fff1f1');
}
return msghtml;
}
messageinfo(chatid) {
const instance = this;
const html = instance._chatTemplate.getMsgInfoBodyHtml();
if (Chat.isFullScreen) {
$('#fullScreenModalContent').html(html);
$('#fullScreenModal').modal('show');
}
else {
$('#messageInfoSection').html(html).removeClass('hidden');
$('#chatConvoBody').addClass('hidden');
}
Unibase.Platform.Connect.Managers.ChatManager.Instance().messageinfo(chatid).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
$('#msgInfoTxt .msg-span').text(response.message);
if (Chat.isPrivate) {
$('.deliver').html('Delivered at');
$('.read').html('Read at');
if (response.result.messageDeliveredDate != null) {
var b = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(response.result.messageDeliveredDate);
var ddate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithT(b);
var html = `
`;
$('.delivereduserslist').html(html).removeClass('hidden');
if (response.result.messageReadDate != null) {
var b = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(response.result.messageReadDate);
var rdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithT(b);
var html = `
`;
$('.readuserslist').html(html).removeClass('hidden');
}
}
}
else {
$('.deliver').html('Delivered To');
$('.read').html('Read by');
let recievedusers = response.result.recievedUsers;
let readusers = response.result.readUsers;
if (recievedusers != null) {
recievedusers = recievedusers.split('|');
recievedusers = recievedusers.filter(x => x !== '');
let deliveredUsersHtml = '';
if (recievedusers.length) {
for (let i = 0; i < recievedusers.length; i++) {
const contact = Chat.grpdetails.find(x => x.recipientId == recievedusers[i]);
if (contact != null) {
const contactName = contact.contactName;
const avatarHtml = instance._chatTemplate.getUserAvatarHtml(contact);
deliveredUsersHtml += `
${avatarHtml}
`;
}
}
$('.delivereduserslist').html(deliveredUsersHtml).removeClass('hidden');
}
}
if (readusers != null) {
readusers = readusers.split('|');
let readUserHtml = '';
readusers = readusers.filter(x => x !== '');
if (readusers.length) {
for (let i = 0; i < readusers.length; i++) {
const contact = Chat.grpdetails.find(x => x.recipientId == readusers[i]);
const contactName = contact.contactName;
const avatarHtml = instance._chatTemplate.getUserAvatarHtml(contact);
readUserHtml += `
${avatarHtml}
`;
}
$('.readuserslist').html(readUserHtml).removeClass('hidden');
if (recievedusers == null) {
$('.delivereduserslist').html(readUserHtml).removeClass('hidden');
}
}
}
}
}
});
}
closeMsgInfo() {
if (Chat.isFullScreen) {
$('#fullScreenModal').modal('hide');
}
else {
$('#messageInfoSection').addClass('hidden');
$('#chatConvoBody').removeClass('hidden');
}
}
quotetemplate(chat) {
var msg;
var quotedmessage = chat.quotedMessage;
if (quotedmessage.includes('\n') || quotedmessage.includes('')) {
quotedmessage = quotedmessage.replace(/\n/g, '
');
}
if (chat.fileType != null) {
var quotedthumnail;
if (chat.fileType != null) {
if (chat.fileType.match('image.*')) {
quotedthumnail = chat.quotedMessage;
}
else {
if (chat.fileType.includes('audio') || chat.fileType.includes('video')) {
quotedthumnail = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(chat.fileType);
}
else {
quotedthumnail = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(chat.quotedMessage.substring(chat.quotedMessage.lastIndexOf('.') + 1));
}
}
quotedmessage = '
';
}
}
msg = '
' + quotedmessage + '' + chat.message + '
';
return msg;
}
timeAnddateFormat(unformatdate) {
if (unformatdate.toString().includes('GMT')) {
unformatdate = moment.utc(unformatdate).format('MM/DD/YYYY hh:mm:ss');
}
unformatdate = unformatdate.replace(/-/g, '/').replace('T', ' ').split('.')[0];
var msgdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDate(unformatdate);
var currentdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDate(new Date());
var yesterday = new Date();
var previousdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDate(yesterday.setDate(yesterday.getDate() - 1));
if (msgdate == currentdate) {
var date = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithT(unformatdate);
msgdate = date.replace(msgdate, '');
}
else if (previousdate == msgdate) {
msgdate = "Yesterday";
}
return msgdate;
}
groupdefaultmessages(chat) {
var msghtml = "";
var messageDate = moment(chat.messageSentDate).format('MM-DD-YYYY');
var groupactivitytemplate = chat.message.replace(Chat.currentUser.name, "You");
if (chat.groupMessageType == 8) {
var messages = groupactivitytemplate.split(",");
var imagepath = messages[1].split("|");
var image1 = '
';
var image2 = '
';
groupactivitytemplate = messages[0] + ` ${image1}
${image2}`;
}
msghtml += '
' + groupactivitytemplate + '
';
return msghtml;
}
getfileThumbnail(filetype) {
var imgShow = "";
if (filetype.match('pdf.*')) {
imgShow = 'tenants//default//documenttypes//pdf.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('wordprocessingml.*')) {
imgShow = 'tenants//default//documenttypes//word.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('html.*') || filetype.match('cs.*') || filetype.match('ts.*') || filetype.match('js.*')) {
imgShow = 'tenants//default//documenttypes//code.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('txt.*')) {
imgShow = 'tenants//default//documenttypes//document.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('csv.*')) {
imgShow = 'tenants//default//documenttypes//csv.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('zip.*')) {
imgShow = 'tenants//default//documenttypes//zip.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('spreadsheetml.*') || filetype.match('excel.*')) {
imgShow = 'tenants//default//documenttypes//excel.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('rar.*')) {
imgShow = 'tenants//default//documenttypes//rar.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('exe.*')) {
imgShow = 'tenants//default//documenttypes//exe.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.File;
}
else if (filetype.match('audio.*')) {
imgShow = 'tenants//default//documenttypes//audio.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Audio;
}
else if (filetype.match('mpeg.*') || filetype.match('video.*')) {
imgShow = 'tenants//default//documenttypes//video.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Video;
}
else if (filetype.match('image.*')) {
imgShow = 'tenants//default//documenttypes//image.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Image;
}
else {
imgShow = 'tenants//default//documenttypes//file.png';
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Unknown;
}
return imgShow;
}
hidestatus(chatgroupid, contactname) {
var contactid = Chat.contacts.find(x => x.contactName == contactname).contactId;
$('.user-last-chat_' + chatgroupid).removeClass('hidden');
$('.typing_active_' + chatgroupid).addClass('hidden').text('');
var contacts = $('.typing_active_' + chatgroupid).attr('data-typingcontacts').replace(contactname, '');
if (contacts == '') {
$('.typing_active_' + chatgroupid).addClass('hidden');
$('.typing').addClass('hidden');
}
else {
var text = contacts.replace(/|/g, '&');
if (text.startsWith('&')) {
text = text.replace('&', '');
}
$('.typing_active_' + chatgroupid).text(text);
}
$('.typing_active_' + chatgroupid).attr('data-typingcontacts', contacts);
$('.typing').find('.typingspan_' + contactid).remove();
}
quoteMessage(chatid) {
Chat.chatid = chatid;
var istext = true;
let index = Chat.chatlistarray.findIndex(x => x.chatId == Chat.chatid);
if (index == -1)
return;
var msg = Chat.chatlistarray[index].message;
$('#input_msg_send_chatapp').focus();
msg = msg.replace(/
/g, '').replace(/ /g, '').trim();
var quotedmsg = Chat.chatlistarray[index].quotedMessage;
var filepathdata = Chat.chatlistarray[index].filePath;
if (filepathdata != "null" && quotedmsg == null && filepathdata != undefined) {
var filetype = Chat.chatlistarray[index].fileName.substring(Chat.chatlistarray[index].fileName.lastIndexOf('.') + 1);
if (Chat.chatlistarray[index].fileType.includes('audio') || Chat.chatlistarray[index].fileType.includes('video')) {
filetype = Chat.chatlistarray[index].fileType;
}
if (!filetype.match('image.*')) {
filepathdata = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(filetype);
}
msg = '
';
istext = false;
}
var mergemsg = "";
if ($.trim(msg).length > 400) {
mergemsg = 'text-truncate';
}
var quotehtml = `
${istext ? `${msg} ` : `${msg}`} `;
$('.div_selected_files').addClass('hidden');
$('#quoteMsgWrap').html(quotehtml).removeClass('hidden');
$("#closeQuote").click(function () {
$('.quotemessage_' + Chat.chatGroupId).remove();
$('#quoteMsgWrap').addClass('hidden');
$('#icon_send').addClass('hidden');
$('#recordaudio').removeClass('hidden');
});
}
draftMessage() {
var chatId = $('.quotemessage_' + Chat.chatGroupId).attr("id");
var msg = $('#input_msg_send_chatapp').val();
var draftmessage = null;
if (chatId != undefined || msg != '') {
draftmessage = JSON.stringify({ quote: chatId, message: msg });
}
Unibase.Platform.Connect.Managers.ChatManager.Instance().draftMessage(draftmessage, Chat.chatGroupId).then(function (response) {
if (response.result != null) {
var index = Chat.recentChats.findIndex(x => x.chatGroupId == Chat.chatGroupId);
if (index != -1) {
if (response.result.draftMessage != "null" && response.result.draftMessage != null) {
Chat.recentChats[index].draftMessage = response.result.draftMessage;
}
else {
Chat.recentChats[index].draftMessage = "";
}
$('.user-last-chat_' + response.result.chatGroupId).text(response.result.lastMessage);
var lastupdatedate = "";
if (Chat.chatlistarray.length > 0) {
if (Chat.chatlistarray[Chat.chatlistarray.length - 1].messageType == 0) {
lastupdatedate = Chat.chatlistarray[Chat.chatlistarray.length - 2].messageSentDate;
}
else {
lastupdatedate = Chat.chatlistarray[Chat.chatlistarray.length - 1].messageSentDate;
}
var lastmsgdt = Chat.Instance().timeAnddateFormat(lastupdatedate);
Chat.recentChats[index].messageLastUpdatedDate = lastupdatedate;
}
$('.userChat_' + Chat.chatGroupId).find('.last-chat-time').text(lastmsgdt);
Chat.recentChats[index].lastMessage = response.result.lastMessage;
if (response.result.lastMessage != "") {
Chat.recentChats[index].lastChatId = Chat.chatlistarray[Chat.chatlistarray.length - 1].chatId;
}
}
Chat.chatlistarray = [];
Chat.chatGroupId = 0;
}
});
}
editMessage(chatid) {
var chatInfo = Chat.chatlistarray.find(x => x.chatId == chatid);
chatInfo.message = chatInfo.message.replace(/ /g, ' ').replace(/
/g, '\n').replace(/>/g, '>');
$('#input_msg_send_chatapp').val(chatInfo.message).trigger('keyup');
$('#input_msg_send_chatapp').focus();
$('#icon_send').removeClass('hidden');
$('#recordaudio').addClass('hidden');
Chat.chatid = chatid;
Chat.isEdit = true;
}
edit(chatid) {
$('.div_CLose').addClass('hidden');
var text = $('#input_msg_send_chatapp').val().toString();
var chatInfo = Unibase.Platform.Connect.Components.Chat.chatlistarray.find(x => x.chatId == chatid);
let req = new Unibase.Platform.Connect.Requests.Chat();
req = chatInfo;
if (text.trim() == chatInfo.message.trim()) {
$('#input_msg_send_chatapp').val('');
return;
}
if (text.includes('\n') || text.includes('')) {
text = text.replace(/ /g, ' ').replace(/\n/g, '
');
}
req.Message = text;
this._chatmanager.EditMessage(chatid, text).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
var packet = Chat.Instance().reqToServerMessagePacket(response.result);
Chat.chatlistarray[Chat.chatlistarray.findIndex(x => x.chatId == chatid)] = response.result;
Chat.Instance().editHtml(chatid);
Unibase.Platform.Connect.Components.Chatter.Instance().editMessage(packet, null);
$('#input_msg_send_chatapp').val('');
$('#icon_send').addClass('hidden');
$('#recordaudio').removeClass('hidden');
Chat.istyping = true;
Chat.isEdit = false;
}
});
}
starmessages() {
var html = '';
var list = '';
$('.staredmsgs-list').html('');
var staremessage = Chat.chatlistarray.filter(x => x.isStared != null && x.isStared.includes(Chat.currentUser.userId));
$(".profiledetails").addClass('hidden');
Chat.privatewindow = true;
for (var i = 0; i < staremessage.length; i++) {
var q = '';
var editicon = '';
var fname = '';
var msg = staremessage[i].message;
if (staremessage[i].isEdit) {
editicon = '
';
}
if (staremessage[i].quotedMessage != null) {
q = Unibase.Platform.Connect.Components.Chat.Instance().quotetemplate(staremessage[i]);
msg = '';
}
if (Chat.isPrivate) {
var showfromuser = "hidden";
}
if (staremessage[i].fromUserName != Chat.currentUser.name) {
fname = '
' + staremessage[i].fromUserName + '
';
}
var localDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDate(staremessage[i].messageSentDate);
var messageDate = moment.utc(staremessage[i].messageSentDate).format('MM-DD-YYYY');
var msgTime = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithT(staremessage[i].messageSentDate);
msgTime = msgTime.replace(localDate, "");
var getdatehtml = "";
if ($('#starmsg_' + messageDate).length == 0) {
getdatehtml = Chat.Instance().getMessageDate(messageDate);
}
if (Chat.currentUser.userId == staremessage[i].fromUserId) {
html = '
' + '' + fname + q + msg + '' + editicon + ' ' + msgTime + ' ';
}
else {
html = '
' + '' + fname + q + msg + '' + editicon + ' ' + msgTime + ' ';
}
list = '
' + getdatehtml + ' ' + html + ' ';
$('.staredmsgs-list').append(list);
}
$('.starredmsgs-section').removeClass('hidden');
$('#closestarmsgswindow').click(function () {
$('.starredmsgs-section').addClass('hidden');
$('.profiledetails').removeClass('hidden');
});
}
getStarMessagesCount() {
return Chat.chatlistarray.filter(x => x.isStared != null && x.isStared.includes(Chat.currentUser.userId) && !x.isDelete).length;
}
closeStarMessages() {
$('.chat-message-wrap').removeClass('hidden');
$('.chatoptions-wrapper').removeClass('hidden');
$("#starMsgHeader").addClass('hidden');
$("#chatMsgHeader").removeClass('hidden');
if (!Chat.isFullScreen) {
$("#chatConvoBody").addClass('hidden');
$(".profiledetails").removeClass('hidden');
}
$('#chatFooter').removeClass('hidden');
}
searchdesign() {
if (!$('#chatMsgSearchWrap').length) {
const html = '
';
$('#chatMsgHeader').append(html);
}
$('#chatMsgSearchWrap').removeClass('hidden');
$('.div_chatMediaHeader').addClass('hidden');
var c = 1;
for (var i = 0; i < c; i++) {
if (!$('.more_msg').hasClass('d-none')) {
$('.morediv').trigger('click');
c++;
}
}
$('#back_toheader').click(function () {
$('#search_chatmsg').val('');
$('.div_chatMediaHeader').removeClass('hidden');
$('#chatMsgSearchWrap').addClass('hidden');
$('.searched-msg').removeClass('searched-msg active');
$('.searchmsgcount .arrow-icon').addClass('disabled');
$('.searchmsgcount').addClass('hidden');
});
}
searchmessages(keydata) {
let searchMsgTimer;
window.clearTimeout(searchMsgTimer);
searchMsgTimer = setTimeout(() => {
if (keydata.keyCode == 13) {
const upCount = +$('.up_count').text();
const totalCount = +$('.total_count').text();
if (upCount < totalCount) {
Chat.Instance().searchedmessages(false);
}
return;
}
var count = 0;
Chat.messagesid = [];
$('.up_count').text(0);
var list = Chat.chatlistarray.filter(x => x.groupMessageType == 0);
if (list.length > 0) {
var word = $('#search_chatmsg').val().toString().toLowerCase().trim();
if (word == "") {
$('.total_count').text(0);
$('.searched-msg').removeClass('searched-msg active');
$('.searchmsgcount .arrow-icon').addClass('disabled');
$('.searchmsgcount').addClass('hidden');
}
else {
for (const msg of list) {
const chatId = msg.chatId;
var msgText = msg.message.toLowerCase().trim();
if (msgText.indexOf(word) >= 0) {
count++;
var item = {
index: count, id: msg.chatId
};
Chat.messagesid.push(item);
var exp = new RegExp(word, "g");
var msgHtml = msgText.replace(exp, `
${word} `);
$(`#message_${chatId}`).html(msgHtml);
}
else {
$(`#msgcolor_${chatId}`).removeClass('searched-msg active');
}
$('.total_count').text(count);
$('.searchmsgcount').removeClass('hidden');
}
if (count != 0) {
$('.up_count').text(1);
if (count === 1) {
$('.searchmsgcount .arrow-icon').addClass('disabled');
}
else {
$('.searchmsgcount .up-arrow').removeClass('disabled');
$('.searchmsgcount .down-arrow').addClass('disabled');
}
}
else {
$('.searchmsgcount .arrow-icon').addClass('disabled');
}
if (keydata.keyCode != 13) {
const lastSearchedMsgEl = $('.messageslist .searched-msg').last();
lastSearchedMsgEl.addClass('active');
lastSearchedMsgEl[0].scrollIntoView({ block: "center" });
}
}
if (count != 0) {
$('.up_count').text(1);
}
}
}, 1000);
}
searchedmessages(downarrow) {
let upCount = +$('.up_count').text();
const totalCount = +$('.total_count').text();
let activeItemIndex = Chat.messagesid.findIndex(x => x.id === $('.searched-msg.active').attr('data-chatid'));
activeItemIndex = downarrow ? activeItemIndex + 1 : activeItemIndex - 1;
const countVal = downarrow ? upCount - 1 : upCount + 1;
$('.messageslist .searched-msg.active').removeClass('active');
$(`#msgcolor_${Chat.messagesid[activeItemIndex].id}`).addClass('active');
$(`#msgcolor_${Chat.messagesid[activeItemIndex].id}`)[0].scrollIntoView({ block: "center" });
$('.up_count').text(countVal);
upCount = +$('.up_count').text();
if (upCount === totalCount) {
$('.searchmsgcount .up-arrow').addClass('disabled');
$('.searchmsgcount .down-arrow').removeClass('disabled');
}
else if (upCount === 1) {
$('.searchmsgcount .up-arrow').removeClass('disabled');
$('.searchmsgcount .down-arrow').addClass('disabled');
}
else if (upCount < totalCount) {
$('.searchmsgcount .down-arrow').removeClass('disabled');
$('.searchmsgcount .up-arrow').removeClass('disabled');
}
}
copyMessage(chatid) {
var chatInfo = Chat.chatlistarray.find(x => x.chatId == chatid);
var message = chatInfo.message;
if (message.startsWith('*') && message.endsWith('*')) {
message = message.replaceAll('*', '');
}
else if (message.startsWith('_') && message.endsWith('_')) {
message = message.replaceAll('_', '');
}
else if (message.startsWith('~') && message.endsWith('~')) {
message = message.replaceAll('~', '');
}
if (message.includes('
') || message.includes(' ')) {
message = message.replaceAll(/
/g, '\n');
message = message.replaceAll(/ /g, '');
}
var text = message;
var textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("Copy");
textArea.remove();
}
deleteForEveryone(chatid) {
const instance = this;
if (Chat.isBlock) {
Chat.Instance().BlockAlert();
return;
}
instance.chatPopup({
message: 'Are you sure you want to delete for everyone?',
buttons: {
confirm: {
label: 'Delete'
},
cancel: {
label: 'Cancel'
}
},
callback: (result) => {
if (result) {
var chatInfo = Unibase.Platform.Connect.Components.Chat.chatlistarray.find(x => x.chatId == chatid);
instance._chatmanager.DeleteForEveryone(chatid, Chat.chatGroupId).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
chatInfo.isDelete = true;
Chat.chatlistarray[Chat.chatlistarray.findIndex(x => x.chatId == chatid)] = response.result;
var packet = Chat.Instance().reqToServerMessagePacket(chatInfo);
Unibase.Platform.Connect.Components.Chatter.Instance().Deleteforeveryone(packet, null);
Chat.Instance().deleteForEveryoneHtml(chatid);
}
});
}
}
});
}
deleteMessage(chatid) {
const instance = this;
instance.chatPopup({
message: "Are you sure you want to delete?",
buttons: {
confirm: {
label: 'Delete'
},
cancel: {
label: 'Cancel'
}
},
callback: function (result) {
if (result) {
var chatlistarray = Unibase.Platform.Connect.Components.Chat.chatlistarray;
var index = chatlistarray.findIndex(x => x.chatId == chatid);
var messageDate = moment(chatlistarray[index].messageSentDate).format('MM-DD-YYYY');
instance._chatmanager.Delete(chatid, Chat.currentUser.userId).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Unibase.Platform.Connect.Components.Chat.chatlistarray[index] = response.result;
var nextmsgtime = $('.chat-messages_' + chatid).next().find('.time').attr("data-msgtime");
var currentmsgtime = $('.chat-messages_' + chatid).find('.time').attr("data-msgtime");
var previoustime = $('.chat-messages_' + chatid).prev().find('.time').attr("data-msgtime");
if (nextmsgtime != currentmsgtime) {
if (currentmsgtime == previoustime) {
$('.chat-messages_' + chatid).prev().find('.time').removeClass('hidden');
}
}
$('.chat-messages_' + chatid).remove();
if ($('.dateli_' + messageDate).length == 0) {
$('#date_' + messageDate).remove();
}
}
});
}
}
});
}
forwardDesign(chatid) {
const instance = this;
var html = instance._chatTemplate.getForwardTemplate();
if (!Chat.isFullScreen) {
$('#forwardContactsSection').html(html).removeClass('hidden');
$('#chatConvoBody').addClass('hidden');
$('.webcam').addClass("hidden");
}
else {
$('#fullScreenModalContent').html(html);
$('#fullScreenModal').modal();
}
$('._btnSendToMany').removeClass('hidden');
$('#forwardSendBtn').attr('data-chatid', chatid);
$('#forwardSendBtn').click(function () {
instance.sendToMany($(this).attr('data-chatid'));
});
this.forwardContacts();
}
sendToMany(chatid) {
if (chatid == "Multi-Forward") {
Unibase.Platform.Connect.Components.Chat.Instance().multipleforward();
}
else {
Unibase.Platform.Connect.Components.Chat.Instance().forwardMessage(chatid);
}
}
multipleforward() {
var recipients = [];
$('input[name="forwardcontact"]').each(function () {
if ($(this).is(':checked')) {
var chatGroupid = Number($(this).attr('data-chatgroupid'));
var contactid = Number($(this).attr('data-contactid'));
var chatobj = {
contactId: contactid, chatGroupId: chatGroupid
};
recipients.push(chatobj);
}
});
var obj = { Recipients: recipients, Messages: Chat.MultiSelect };
Unibase.Platform.Connect.Managers.ChatManager.Instance().forwardmultiple(obj).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
for (var i = 0; i < response.result.length; i++) {
var contactinfo = Chat.Instance().getContactInfo(response.result[i].contactId, response.result[i].chatGroupId);
var packet = Chat.Instance().reqToClientMessagePacket(response.result[i]);
packet.isPrivate = contactinfo.isPrivate;
packet.toUserPhotoUrl = contactinfo.photoUrl;
packet.fromUserName = contactinfo.contactName;
packet.fromUserId = contactinfo.contactId;
packet.message = response.result[i].lastMessage;
packet.messageSentDate = new Date();
packet.groupMessageType = 0;
Chat.Instance().newChat(packet, true);
}
Chat.MultiSelect = [];
MessageHelper.Instance().showSuccess("Successfully forwarded", '');
}
else {
alert("failed to forward");
}
$('.forward-contacts-section').addClass('hidden');
$('.chat-convo-body').removeClass('hidden');
});
}
closeForwardContacts() {
Chat.groupcontacts = [];
if (!Chat.isFullScreen) {
$('#chatConvoBody').removeClass('hidden').siblings().addClass('hidden');
}
else {
$('#fullScreenModal').modal('hide');
}
}
starMessageTemplate(chatId) {
var index = Chat.chatlistarray.findIndex(x => x.chatId == chatId);
let editedmsg = Chat.chatlistarray[index];
let currentUser = Chat.currentUser.userId.toString();
var msg = editedmsg.message;
if (editedmsg.isStared == null) {
Unibase.Platform.Connect.Components.Chat.chatlistarray[index].isStared = "";
}
var RemoveStarmessage = '
Unstar message ';
var Starmessage = '
Star message ';
var result = editedmsg.isStared.includes(currentUser);
if (result) {
var dropdownElement = $("#drpdwn_" + editedmsg.chatId);
dropdownElement.find(".star").remove();
msg = `
`;
$(RemoveStarmessage).appendTo("#drpdwn_" + editedmsg.chatId);
$('#message_' + editedmsg.chatId).prepend(msg);
$('#message_' + editedmsg.chatId).closest('.message-body').addClass('star-msg-body');
}
else {
var dropdownElement = $("#drpdwn_" + editedmsg.chatId);
dropdownElement.find(".unstar").remove();
$('#message_' + editedmsg.chatId).find('.star-msg-icon').remove();
$('#message_' + editedmsg.chatId).closest('.message-body').removeClass('star-msg-body');
msg = msg;
$(Starmessage).appendTo("#drpdwn_" + editedmsg.chatId);
}
}
StarMessage(chatid) {
let currentUser = Chat.currentUser.userId;
this._chatmanager.StarMessage(chatid, currentUser).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Chat.chatlistarray[Chat.chatlistarray.findIndex(x => x.chatId == chatid)] = response.result;
Chat.Instance().starMessageTemplate(chatid);
}
});
}
UpdateDeliveryStatus(packet) {
if (Chat.chatGroupId == packet.chatGroupId) {
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == packet.chatId);
if (index != -1) {
Unibase.Platform.Connect.Components.Chat.chatlistarray[index] = packet;
}
else {
Unibase.Platform.Connect.Components.Chat.chatlistarray.push(packet);
}
Chat.Instance().updateMessageStatus(packet.chatId);
}
}
UpdateReadStatus(packet) {
if (Chat.chatGroupId == packet.chatGroupId) {
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == packet.chatId);
if (index != -1) {
Unibase.Platform.Connect.Components.Chat.chatlistarray[index] = packet;
}
else {
Unibase.Platform.Connect.Components.Chat.chatlistarray.push(packet);
}
Chat.Instance().updateMessageStatus(packet.chatId);
}
}
editedMsg(packet) {
if (Chat.chatGroupId == packet.chatGroupId) {
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == packet.chatId);
Unibase.Platform.Connect.Components.Chat.chatlistarray[index] = packet;
Chat.Instance().editHtml(packet.chatId);
}
else {
var chatindex = Chat.recentChats.findIndex(x => x.chatGroupId == packet.chatGroupId);
if (chatindex != -1) {
if (Chat.recentChats[chatindex].lastChatId == packet.chatId) {
Chat.recentChats[chatindex].lastMessage = packet.message;
$('.user-last-chat_' + packet.chatGroupId).text(packet.message);
}
}
}
}
deleteall(packet) {
if (Chat.chatGroupId == packet.chatGroupId) {
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == packet.chatId);
Unibase.Platform.Connect.Components.Chat.chatlistarray[index] = packet;
Chat.Instance().deleteForEveryoneHtml(packet.chatId);
}
else {
var chatindex = Chat.recentChats.findIndex(x => x.chatGroupId == packet.chatGroupId);
if (chatindex != -1) {
if (Chat.recentChats[chatindex].lastChatId == packet.chatId) {
Chat.recentChats[chatindex].lastMessage = "This message was deleted";
$('.user-last-chat_' + packet.chatGroupId).text("This message was deleted");
}
}
}
Chat.mediadoclinks = Chat.chatlistarray.filter(x => x.messageType != 1 && 2).filter(x => x.isDelete == false).filter(x => x.groupMessageType == 0);
}
deleteForEveryoneHtml(chatid) {
var chatinfo = Chat.chatlistarray.find(x => x.chatId == chatid);
var message = (Chat.currentUser.userId == chatinfo.fromUserId) ? "You deleted this message" : "This message was deleted";
var html = '
' + message + ' ';
$('.chat-messages_' + chatinfo.chatId).find('.message-span').html(html);
$('.chat-messages_' + chatinfo.chatId).find('.message-download').remove();
$('.chat-messages_' + chatinfo.chatId).find('.msg_status').remove();
var optionhtml = '
Delete ';
$('.chat-messages_' + chatinfo.chatId).find('.chatoptions-wrapper').find('.dropdown-menu').html(optionhtml);
}
editHtml(chatId) {
var html = '';
var chatinfo = Chat.chatlistarray.find(x => x.chatId == chatId);
var msg = chatinfo.message;
if (chatinfo.quotedMessage != null) {
html += Unibase.Platform.Connect.Components.Chat.Instance().quotetemplate(chatinfo);
msg = '';
}
html += '
' + msg + ' ';
if (chatinfo.isStared != null) {
html = html + '
';
}
$('.chat-messages_' + chatinfo.chatId).find('.message-span').html(html);
}
showtyping(contactname, contactid, chatgroupId, isprivate) {
$('.user-last-chat_' + chatgroupId).addClass('hidden');
$('.typing_active_' + chatgroupId).removeClass('hidden');
var typingtext = "typing";
var contactstext = contactname;
if (!isprivate) {
var typingcontacts = contactname;
if ($('.typing_active_' + chatgroupId).attr('data-typingcontacts') != '') {
typingcontacts += $('.typing_active_' + chatgroupId).text().replace("typing", "&");
contactstext = $('.typing_active_' + chatgroupId).attr('data-typingcontacts') + "|" + contactname;
}
typingtext = typingcontacts + " typing";
}
$('.typing_active_' + chatgroupId).attr('data-typingcontacts', contactstext).text(typingtext);
$('.user-last-chat_' + chatgroupId).addClass('hidden');
$('.typing').removeClass('hidden');
if (Chat.chatGroupId == chatgroupId) {
Chat.Instance().loadTyping(chatgroupId);
}
}
loadTyping(chatgroupid) {
$('.typing').html('');
var element = $('.typing_active_' + chatgroupid).attr('data-typingcontacts');
if (element != undefined) {
var typingcontacts = $('.typing_active_' + chatgroupid).attr('data-typingcontacts').split("|").filter(x => x != "");
for (let i = 0; i < typingcontacts.length; i++) {
var html = Chat.Instance()._chatTemplate.getTypingTemplate(typingcontacts[i]);
$('.typing').append(html);
}
(typingcontacts.length == 0) ? $('.typing').html('').addClass('hidden') : $('.typing').removeClass('hidden');
}
}
LoadAttachments(event) {
var a = '';
if (event.files != undefined) {
var files = event.files;
var imgShow = "";
for (let i = 0; i < files.length; i++) {
let f = files[i];
a = f.name.substring(f.name.lastIndexOf('.') + 1);
if (f.type.includes('audio') || f.type.includes('video')) {
a = f.type;
}
var reader = new FileReader();
if (!f.type.match('image.*')) {
imgShow = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(a);
reader.onload = (function (theFile) {
return function (e) {
Unibase.Platform.Connect.Components.Chat.Instance().renderthumbnail(imgShow);
};
})(f);
reader.readAsDataURL(f);
}
else {
reader.onload = (function (theFile) {
return function (e) {
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Image;
Unibase.Platform.Connect.Components.Chat.Instance().renderthumbnail(e.target.result);
};
})(f);
reader.readAsDataURL(f);
}
}
Unibase.Platform.Connect.Components.Chat.Instance().uploadFile();
}
document.getElementById('chat_attachments').addEventListener('change', this.LoadAttachments, false);
}
uploadFile() {
let fileUpload = $(".fileUpload").get(0);
var files = fileUpload.files;
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
Chat.itemid++;
let file = files[i];
var item = { Files: file, Index: Chat.itemid };
Chat.attachments.push(item);
$("#input_msg_send_chatapp").focus();
if (Chat.attachments.length > 0) {
$('#icon_send').removeClass('hidden');
$('#recordaudio').addClass('hidden');
}
}
}
}
renderthumbnail(imgshow) {
Chat.fileitems++;
var span = '
' +
' ' +
' ';
$('#quoteMsgWrap').addClass('hidden');
$('.div_selected_files').append(span).removeClass('hidden');
$("#input_msg_send_chatapp").focus();
$('#icon_send').removeClass('hidden');
$('#recordaudio').addClass('hidden');
}
removeFile(index) {
$('.imagethumbnail_' + index).remove();
Chat.attachments = Chat.attachments.filter(x => x.Index != index);
if (Chat.attachments.length == 0) {
$('#icon_send').addClass('hidden');
$('#recordaudio').removeClass('hidden');
$('.fileUpload').val('');
}
}
GetFilePath(filepath) {
filepath.split("\\").join("//");
filepath = filepath.replace('wwwroot', '');
if (filepath.startsWith("/")) {
var path = filepath.split("/");
filepath = filepath.replace("/" + path[1], path[1]);
}
return filepath;
}
downloadfile(filepath, chatid) {
if (!isMobileApp()) {
filepath = Chat.Instance().getFilePath(filepath);
$(".downloadfiles_" + chatid).attr("href", filepath).click();
}
else {
Unibase.Platform.Helpers.MobileHelper.Instance().downloadFile(filepath);
}
}
filePreview(path) {
path = _appsettings.server_url() + "/" + path;
window.open(path, '');
}
changeProfileImage(event) {
let oldPhotoUrl = Chat.Instance().getContactInfo(0, Chat.chatGroupId).photoUrl;
let user = Chat.currentUser;
if (event.files != null) {
var files = event.files[0];
var name = event.files[0].name;
var filedata = new FormData();
filedata.append(name, files);
const url = _appsettings.server_url() + '/apis/uniconnect/chats/ProfileChange/chatgroupid/' + Chat.chatGroupId;
$.ajax({
url: url,
type: "POST",
data: filedata,
contentType: false,
processData: false,
beforeSend: function (xhr) {
if (user !== undefined && user !== null) {
xhr.setRequestHeader('Authorization', 'Basic ' + user.sessionId);
xhr.setRequestHeader('geoposition', user.latd + ':' + user.lgId);
}
},
success: function (response) {
console.log(response.message);
Chat.attachments = [];
var newPhotoUrl = response.result;
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.ChangeProfilePic, oldPhotoUrl, newPhotoUrl, 0);
Chat.Instance().updateProfile(response.result, Chat.chatGroupId);
},
error: function (error) {
console.log(error);
alert("failed to Update profile");
}
});
}
}
sendmessage(msg) {
var message = $('#input_msg_send_chatapp').val().toString();
if (msg != undefined) {
if (msg.indexOf('blob') != -1) {
message = msg;
}
;
}
var val = message.trim();
if (val != '') {
message = message.replace(//g, '>');
var messageType;
var Touserid = Number($('#private_id').val());
let req = new Unibase.Platform.Connect.Requests.Chat();
req.ChatGroupId = Unibase.Platform.Connect.Components.Chat.chatGroupId;
req.ToUserId = Touserid;
req.FromUserId = Chat.currentUser.userId;
req.Message = message;
messageType = Unibase.Platform.Connect.Enums.MessageType.Text;
if (message.includes('https/') || message.includes('www.'))
messageType = Unibase.Platform.Connect.Enums.MessageType.Url;
req.MessageType = messageType;
if ($('.quotemessage_' + Chat.chatGroupId).text() != "") {
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == Chat.chatid);
var quotedfiles = Chat.chatlistarray[index].filePath;
if (quotedfiles != null) {
req.QuotedMessage = Chat.chatlistarray[index].filePath;
req.FileType = Chat.chatlistarray[index].fileType;
Chat.chatid = 0;
}
else {
var html = Chat.chatlistarray[index].message + '
' + Chat.chatlistarray[index].fromUserName + '
';
req.QuotedMessage = html;
}
}
this._chatmanager.saveChat(req).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Unibase.Platform.Connect.Components.Chat.chatlistarray.push(response.result);
Chat.Instance().newMessage(response.result);
var contactinfo = Chat.Instance().getContactInfo(Chat.contactId, Chat.chatGroupId);
if (contactinfo != undefined) {
Chat.chatGroupId = response.result.chatGroupId;
var packet = Chat.Instance().reqToClientMessagePacket(response.result);
packet.isPrivate = contactinfo.isPrivate;
packet.toUserPhotoUrl = contactinfo.photoUrl;
packet.fromUserName = contactinfo.contactName;
packet.fromUserId = contactinfo.contactId;
packet.messageSentDate = response.result.messageSentDate;
Chat.Instance().newChat(packet);
}
$(`.user-last-chat_${Chat.chatGroupId}`).text(response.result.message);
}
});
}
}
newMessage(packet) {
var messagedate = moment.utc(packet.messageSentDate).format("MM-DD-YYYY");
var html = '';
if ($('#date_' + messagedate).length == 0) {
html += Chat.Instance().getMessageDate(messagedate);
}
html += Chat.Instance().loadconversation(packet, true);
$('.messageslist').append(html);
let lastelement = $('.chat-message-wrap').last();
if (lastelement[0] != undefined)
lastelement[0].scrollIntoView();
}
sendfiles() {
var message = $('#input_msg_send_chatapp').val();
Chat.fileitems = 0;
Chat.itemid = 0;
var count = 0;
var messageType = Chat.messagetype;
$('#chat_attachments').prop("value", null);
var Touserid = Number($('#private_id').val());
var fileData = new FormData();
fileData.append(message.toString(), 'msg');
for (var i = 0; i < Chat.attachments.length; i++) {
var files = Chat.attachments[i].Files;
if (files.size <= 300000000) {
fileData.append(files.name, files);
count++;
}
else {
alert("Cannot Upload File More Than 300MB");
return;
}
}
if (message == "") {
message = null;
}
for (var i = 0; i < Chat.attachments.length; i++) {
Unibase.Platform.Connect.Components.Chat.Instance().filetemplate(Chat.attachments[i].Files);
}
if (count == 0 && Chat.attachments.length != 0) {
$('.div_selected_files').html('');
return;
}
const url = _appsettings.server_url() + '/apis/uniconnect/Chats/savechatattachments/touserid/' + Touserid + '/chatgroupid/' + Chat.chatGroupId + '/messagetype/' + messageType + '/fromusername/' + Chat.currentUser.name;
$.ajax({
url: url,
type: "POST",
data: fileData,
contentType: false,
processData: false,
beforeSend: function (xhr) {
if (Chat.currentUser.userId !== undefined && Chat.currentUser.userId !== null) {
xhr.setRequestHeader('Authorization', 'Basic ' + Chat.currentUser.sessionId);
xhr.setRequestHeader('geoposition', Chat.currentUser.latd + ':' + Chat.currentUser.lgId);
}
},
success: function (response) {
console.log(response.Message);
Chat.attachments = [];
Chat.messagetype = 1;
$('.div_selected_files').html('');
if (response.result != null) {
$('.chat-messages_temp').remove();
for (let i = 0; i < response.result.length; i++) {
Chat.Instance().newMessage(response.result[i]);
}
if (Chat.chatGroupId == 0) {
var contactinfoindex = Chat.contacts.findIndex(x => x.contactId == Chat.contactId);
if (contactinfoindex != -1) {
Chat.chatGroupId = response.result.chatGroupId;
Chat.contacts[contactinfoindex].chatGroupId = response.result[0].chatGroupId;
var clientresponse = response.result[response.result.length - 1];
var packet = Chat.Instance().reqToClientMessagePacket(clientresponse);
packet.isPrivate = true;
packet.toUserPhotoUrl = Chat.contacts[contactinfoindex].photoUrl;
packet.fromUserName = Chat.contacts[contactinfoindex].contactName;
packet.fromUserId = Chat.contacts[contactinfoindex].contactId;
Chat.Instance().newChat(packet);
}
}
else {
$('#input_msg_send_chatapp').focus();
}
for (let i = 0; i < response.result.length; i++) {
Chat.Instance().updateMessageStatus(response.result[i].chatId);
}
}
},
error: function (error) {
console.log(error);
$('.uploading-icon').addClass('hidden');
$('.error-icon').removeClass('hidden');
$('.div_selected_files').html('');
}
});
}
reqToServerMessagePacket(response) {
let _packet = new Unibase.Platform.Connect.Server.Packets.MessageDetails();
_packet.ChatGroupId = response.chatGroupId;
_packet.FromUserId = response.fromUserId;
_packet.ToUserId = response.toUserId;
_packet.CreatedDate = response.createdDate;
_packet.Message = response.message;
_packet.LastSeen = response.lastSeen;
_packet.FromUserName = response.fromUserName;
_packet.ChatId = response.chatId;
_packet.MessageStatusId = response.messageStatusId;
_packet.MessageDeliveredDate = response.messageDeliveredDate;
_packet.MessageReadDate = response.messageReadDate;
_packet.StatusId = response.statusId;
_packet.CreatedBy = response.createdBy;
_packet.FilePath = response.filePath;
_packet.FileName = response.fileName;
_packet.FileType = response.fileType;
_packet.CommentChatId = response.commentChatId;
_packet.QuotedMessage = response.quotedMessage;
_packet.TempId = response.tempId;
_packet.MessageType = response.messageType;
_packet.SessionId = Chat.currentUser.sessionId;
_packet.MessageSentDate = response.messageSentDate;
_packet.Users = response.users;
_packet.RecievedUsers = response.recievedUsers;
_packet.ReadUsers = response.readUsers;
_packet.ClearChatFor = response.clearChatFor;
_packet.IsDelete = response.isDelete;
_packet.IsEdit = response.isEdit;
_packet.DeliveredBy = response.deliveredBy;
_packet.ReadBy = response.readBy;
_packet.GroupMessageType = response.groupMessageType;
_packet.IsPrivate = response.isPrivate;
return _packet;
}
reqToClientMessagePacket(response) {
let _packet = new Unibase.Platform.Connect.Client.Packets.MessageDetails();
_packet.chatGroupId = response.chatGroupId;
_packet.fromUserId = response.fromUserId;
_packet.toUserId = response.toUserId;
_packet.createdDate = response.createdDate;
_packet.message = response.message;
_packet.lastSeen = response.lastSeen;
_packet.fromUserName = response.fromUserName;
_packet.chatId = response.chatId;
_packet.messageStatusId = response.messageStatusId;
_packet.messageDeliveredDate = response.messageDeliveredDate;
_packet.messageReadDate = response.messageReadDate;
_packet.statusId = response.statusId;
_packet.createdBy = response.createdBy;
_packet.filePath = response.filePath;
_packet.fileName = response.fileName;
_packet.fileType = response.fileType;
_packet.commentChatId = response.commentChatId;
_packet.quotedMessage = response.quotedMessage;
_packet.tempId = response.tempId;
_packet.messageType = response.messageType;
_packet.messageSentDate = response.messageSentDate;
_packet.users = response.users;
_packet.recievedUsers = response.recievedUsers;
_packet.readUsers = response.readUsers;
_packet.clearChatFor = response.clearChatFor;
_packet.isDelete = response.isDelete;
_packet.isEdit = response.isEdit;
_packet.deliveredBy = response.deliveredBy;
_packet.readBy = response.readBy;
_packet.groupMessageType = response.groupMessageType;
_packet.isPrivate = response.isPrivate;
return _packet;
}
updateAdminStatus(recipientId, isAdmin) {
var contactname = Chat.contacts.find(x => x.contactId == recipientId).contactName;
var text = isAdmin ? "make " : "remove ";
var method = isAdmin ? 'Unibase.Platform.Connect.Components.Chat.Instance().makeAdmin(' + recipientId + ',' + Chat.chatGroupId + ')' : 'Unibase.Platform.Connect.Components.Chat.Instance().removeAdmin(' + recipientId + ',' + Chat.chatGroupId + ')';
Chat.Instance().chatPopup({
message: 'Do you want to ' + text + contactname + ' as admin ?',
buttons: {
confirm: {
label: text + " admin",
},
cancel: {
label: 'Cancel'
}
},
callback: (result) => {
if (result) {
Unibase.Platform.Connect.Managers.ChatManager.Instance().updateAdminStatus(Chat.chatGroupId, recipientId, isAdmin).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
if (isAdmin) {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.MakeAdmin, null, null, recipientId);
}
else {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.RemoveAdmin, null, null, recipientId);
}
eval(method);
}
});
}
}
});
}
createnewgroup() {
const instance = this;
const newgrphtml = instance._chatTemplate.getNewGroupTemplate();
$('.CreateNewChatGroup').html(newgrphtml);
$('#newGroupSection').removeClass('hidden');
$('#chatsContactsSection').addClass('hidden');
Chat.routes.push('create-group');
instance.loadgroupcontacts();
}
addNewParticipants() {
const instance = this;
var RecipientId;
let contacts = Chat.Instance().getContacts();
var html = "";
var photourl;
Chat.groupcontacts = [];
if (contacts.length) {
$('.Notify-Chat-AddParticipants').html('
Loading... ').removeClass('hidden');
for (let i = 0; i < contacts.length; i++) {
var match = false;
for (let j = 0; j < Chat.grpdetails.length; j++) {
if (contacts[i].photoUrl == "" || contacts[i].photoUrl == null) {
photourl = "";
}
if (contacts[i].contactId == Chat.grpdetails[j].recipientId && !Chat.grpdetails[j].isBlock) {
match = true;
}
}
if (match == false) {
const addhtml = instance._chatTemplate.getAddParticipants(contacts[i].contactId, contacts[i].contactName);
html += addhtml;
}
}
$('.Notify-Chat-AddParticipants').html(html);
}
const contactsLength = Chat.groupcontacts.length;
if (contactsLength != 0) {
Chat.groupcontacts.forEach(contact => {
$(".checkuser_" + contact.RecipientId).prop('checked', true);
});
instance.appendSelectedGroupParticipants();
}
$("input[name='selected_participants']").click(function (e) {
e.stopPropagation();
$('.btn_saveGroup').removeClass('hidden');
if (!$(this).is(":checked")) {
RecipientId = +$(this).val();
Chat.groupcontacts = Chat.groupcontacts.filter(x => x.RecipientId != RecipientId);
if (Chat.groupcontacts.length == 0) {
$('.participant_avatar').html('').addClass('hidden');
}
}
else {
RecipientId = +$(this).val();
var req = new Unibase.Platform.Connect.Requests.ChatRecipient();
req.RecipientId = RecipientId;
Chat.groupcontacts.push(req);
}
instance.appendSelectedGroupParticipants();
});
$('.Notify-Chat-AddParticipants .groupuser').click(function () {
$(this).find("input[name='selected_participants']").trigger('click');
});
}
groupname() {
if ($(".btn_saveGroup").hasClass("hidden")) {
$(".btn_saveGroup").removeClass("hidden");
}
}
appendSelectedGroupParticipants() {
const instance = this;
const contactLength = Chat.groupcontacts.length;
if (contactLength <= 2) {
const avatarHtml = Chat.groupcontacts.map(contact => {
var contactinfo = Chat.contacts.find(x => x.contactId == contact.RecipientId);
return instance._chatTemplate.getUserAvatarHtml(contactinfo);
}).join('');
$('.participant_avatar').html(avatarHtml).removeClass('hidden');
}
else {
if (!$('.slectedparticipants-count').length) {
$('.participant_avatar').append(`
`);
}
$(".selectedParticipants").text(`+${contactLength - 2}`);
}
$(".countChatAddParticipants").text(contactLength);
}
changeGroupName() {
const groupname = $('.edit_groupdetailsInput').val().toString();
const prevGroupName = $('.edit_groupdetailsInput').attr('data-prevvalue');
if (groupname !== prevGroupName) {
Unibase.Platform.Connect.Managers.ChatManager.Instance().changeGroupName(Chat.chatGroupId, groupname).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.ChangeGroupName, null, null, 0);
Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId).contactName = groupname;
$(".grpname_" + Chat.chatGroupId).text(groupname);
$('.edit_groupdetailsInput').val(groupname);
}
});
}
$('.edit_grpdetails').removeClass('hidden');
$('#userProfileInfo').find('.Profile_name').text(groupname).removeClass('hidden');
$('#editGroupInputWrap').addClass('hidden');
$('.close_details').addClass('hidden');
$('.group_name').addClass('hidden');
$('.grpname_' + Chat.chatGroupId).text(groupname);
}
Savegroup() {
if (Chat.groupcontacts.length == 0) {
$(".btn_saveGroup").addClass("hidden");
alert("Please Select contacts");
return false;
}
let reqgrp = new Unibase.Platform.Connect.Requests.ChatGroup();
var newgroup = false;
$(".btn_saveGroup").removeClass("hidden");
let user = Chat.currentUser;
let groupuser = new Unibase.Platform.Connect.Requests.ChatRecipient();
if (Chat.chatGroupId != 0) {
reqgrp.GroupName = Chat.grpdetails[0].groupName;
$('.prevcontactname').val(reqgrp.GroupName);
}
if (Chat.chatGroupId == 0) {
reqgrp.GroupName = $("#txt_GroupName").val().toString();
if (reqgrp.GroupName == "" || reqgrp.GroupName == null) {
$(".btn_saveGroup").addClass("hidden");
alert("Please Enter GroupName");
return false;
}
groupuser.RecipientId = user.userId;
groupuser.IsAdmin = true;
groupuser.StatusId = 1;
Chat.groupcontacts.push(groupuser);
reqgrp.IsPrivate = false;
newgroup = true;
$('.prevcontactname').val(reqgrp.GroupName);
}
reqgrp.ChatGroupId = Chat.chatGroupId;
reqgrp.Users = Chat.groupcontacts;
Unibase.Platform.Connect.Managers.ChatManager.Instance().saveChatGroup(reqgrp).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Chat.chatGroupId = response.result.chatGroupId;
Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatRecipientsByGroupId(Chat.chatGroupId).then(function (response) {
Chat.grpdetails = response.result;
if (newgroup) {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.CreateGroup, null, null, 0);
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.AddParticipants, null, null, 0);
$('#chatsContactsSection').removeClass('hidden');
$('#newGroupSection').addClass('hidden');
$(".chatapp-users-list").removeClass("hidden");
$(".div_ContactsList").addClass("hidden");
$('._btncomment').addClass('active');
$('._btnDisplayUser').removeClass('active');
}
else {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.AddParticipants, null, null, 0);
$('.user-profile-info').removeClass('hidden');
$('.div-Chat-AddParticipants').addClass('hidden');
$('.div-Chat-Participants').removeClass('hidden');
$('.star-messages-links').removeClass('hidden');
$('.profile-media-link').removeClass('hidden');
$('.profile-action-div').removeClass('hidden');
$('.btn_AddChatParticipants').removeClass('hidden');
$('#btn_addtoGrpName').addClass('hidden');
$('.user-profile-info,.group-info-header').removeClass('hidden');
$('.div-Chat-AddParticipants,.add-participants-header').addClass('hidden');
Unibase.Platform.Connect.Components.Chat.Instance().participantsList(Chat.grpdetails);
Unibase.Platform.Connect.Components.Chatter.Instance().addParticipants(Chat.grpdetails);
$(Chat.visibleProfileEl).removeClass('hidden');
}
});
}
});
$('.participant_avatar').html('').addClass('hidden');
$('.Search_participants').addClass('hidden');
$('.div-Chat-AddParticipants').addClass('hidden');
}
groupDetails(groupMessageType, oldPhotoUrl, newPhotoUrl, toUserId) {
let user = Chat.currentUser;
var contactinfo = Chat.contacts.find(x => x.contactId == toUserId);
var message;
if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.CreateGroup) {
message = user.name + " " + "created group" + " " + Chat.grpdetails[0].groupName;
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(0, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.AddParticipants) {
Chat.groupcontacts = Chat.groupcontacts.filter(x => x.RecipientId != Chat.currentUser.userId);
for (let i = 0; i < Chat.groupcontacts.length; i++) {
var contactinfo = Chat.contacts.find(x => x.contactId == Chat.groupcontacts[i].RecipientId);
if (contactinfo != undefined) {
message = user.name + " " + "added" + " " + contactinfo.contactName;
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(Chat.grpdetails[i].recipientId, groupMessageType, message);
}
}
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.RemoveParticipants) {
message = user.name + " " + "removed" + " " + contactinfo.contactName;
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(toUserId, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.MakeAdmin) {
message = user.name + " " + "make " + contactinfo.contactName + " " + "as an admin";
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(contactinfo.contactId, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.RemoveAdmin) {
message = user.name + " " + "removed " + contactinfo.contactName + " " + "as an admin";
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(contactinfo.contactId, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.ChangeGroupName) {
message = user.name + " " + "Changed Groupname" + " " + "";
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(0, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.ChangeProfilePic) {
message = user.name + " " + "changed profile image" + "," + oldPhotoUrl + "|" + newPhotoUrl;
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(0, groupMessageType, message);
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.RemoveProfilePic) {
}
else if (groupMessageType == Unibase.Platform.Connect.Enums.GroupMessageType.ExitGroup) {
message = user.name + " " + "left the Group" + " " + Chat.grpdetails[0].groupName;
Unibase.Platform.Connect.Components.Chat.Instance().sendGroupDetails(0, groupMessageType, message);
}
}
sendGroupDetails(toUserId, grpMessageType, message) {
let user = Chat.currentUser;
let req = new Unibase.Platform.Connect.Requests.Chat();
req.ChatGroupId = Chat.chatGroupId;
req.Message = message;
req.GroupMessageType = grpMessageType;
req.FromUserId = user.userId;
req.ToUserId = toUserId;
this._chatmanager.saveChat(req).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
Unibase.Platform.Connect.Components.Chat.chatlistarray.push(response.result);
var grpinfo = Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId);
if (grpinfo == undefined) {
var packet = Chat.Instance().reqToClientMessagePacket(response.result);
packet.groupName = $('.prevcontactname').val().toString();
packet.isPrivate = false;
packet.fromUserId = 0;
packet.message = '';
Chat.Instance().newChat(packet);
}
else {
Chat.Instance().newMessage(response.result);
}
}
});
}
removeGroupParticipant(contactid) {
var contactname = Chat.contacts.find(x => x.contactId == contactid).contactName;
var chatgrpinfo = Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId);
Chat.Instance().chatPopup({
message: "Remove " + contactname + " from " + chatgrpinfo.contactName + " group?",
buttons: {
confirm: {
label: "Remove",
},
cancel: {
label: 'Cancel'
}
},
callback: (result) => {
if (result) {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.RemoveParticipants, null, null, contactid);
Unibase.Platform.Connect.Managers.ChatManager.Instance().RemoveParticipant(Chat.chatGroupId, contactid).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
$('#groupParticipantUser_' + contactid).remove();
var participantcount = Number($('.countChatParticipants').text());
$('.countChatParticipants').text(participantcount - 1);
$('.partipant-count').text(participantcount - 1 + " participants");
$('.lastseen_0').text(participantcount - 1 + " participants");
Chat.grpdetails.find(x => x.recipientId == contactid).isBlock = true;
}
});
}
}
});
}
exitGroup() {
var chatgrpinfo = Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId);
Chat.Instance().chatPopup({
message: "Exit " + chatgrpinfo.contactName + " group ?",
buttons: {
confirm: {
label: 'Exit',
},
cancel: {
label: 'Cancel'
}
},
callback: (result) => {
if (result) {
Unibase.Platform.Connect.Components.Chat.Instance().groupDetails(Unibase.Platform.Connect.Enums.GroupMessageType.ExitGroup, null, null, 0);
let userid = Chat.currentUser.userId;
Unibase.Platform.Connect.Managers.ChatManager.Instance().RemoveParticipant(Chat.chatGroupId, userid).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
$('#groupParticipantUser_' + Chat.currentUser.userId).remove();
$('.ExitFromGroup').addClass('hidden');
alert("You left the group");
if ($('.isadmin_true').length == 0) {
var element = $('.isadmin_false').get(0);
var contactId = Number($(element).find('.dotsicon').attr('data-contactId'));
Unibase.Platform.Connect.Managers.ChatManager.Instance().updateAdminStatus(Chat.chatGroupId, contactId, true);
}
$('.btn_AddChatParticipants').addClass('hidden');
Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId).isBlock = true;
$('#chatFooter').addClass('hidden');
$('.remove_template').removeClass('hidden');
$('.Profile_image').attr("onchange", "javascript:;");
$('.save_changes').attr("onclick", "javascript:;");
$('.edit_grpdetails').attr("onclick", "javascript:;");
$('.user-last-chat_' + Chat.chatGroupId).removeClass('hidden');
$('.typing_active_' + Chat.chatGroupId).addClass('hidden').text('');
$('.typing_active_' + Chat.chatGroupId).attr('data-typingcontacts', '');
}
});
}
}
});
}
clearChat() {
this.chatPopup({
message: "Are you sure you want to clear messages in this chat?",
buttons: {
confirm: {
label: 'Clear',
className: 'btn btn-primary'
},
cancel: {
label: 'Cancel',
className: 'btn btn-outline-danger'
}
},
callback: function (result) {
if (result) {
let userid = Chat.currentUser.userId;
Unibase.Platform.Connect.Managers.ChatManager.Instance().clearChat(Chat.chatGroupId, userid).then(function (response) {
if (response.status == Unibase.Data.Status.Success) {
$('.messageslist').html('');
$('.more_msg').addClass('d-none');
$('.chat_down').addClass('hidden');
}
});
}
}
});
}
EnableVedio(packet) {
alert(packet.userName + "video enabled");
}
openvideo() {
let user = Chat.currentUser;
let _packet = new Unibase.Platform.Connect.Server.Packets.Typing();
_packet.FromUserId = user.userId;
_packet.UserName = user.name;
_packet.ToUserId = Number($('#private_id').val());
Unibase.Platform.Connect.Components.Chat.instance._chatter.openvideo(_packet);
}
profileDetails(type) {
const instance = this;
$(".profiledetails").removeClass("hidden");
$(".Search_participants").addClass('hidden');
Chat.profiledetailswindow = true;
Chat.privatewindow = false;
Chat.chatwindow = false;
const html = instance._chatTemplate.getProfileTemplate();
if (Chat.isFullScreen) {
$('#fullScreenModalContent').html(html);
$('#fullScreenModal').modal();
}
else {
$('#profileDetailsSection').html(html);
$("#chatConvoBody").addClass('hidden');
}
Chat.routes.push('profile-details');
instance.profileheader();
const profilebody = instance._chatTemplate.getprofilebody();
$('.profileDetails').html(profilebody);
Chat.Instance().getMediaCount();
if (!Chat.isPrivate) {
$('.blockUser').addClass('hidden');
$('.div-Chat-Groups').addClass('hidden');
$('.div-Chat-Participants').removeClass('hidden');
$('.Notify-Chat-Participants').removeClass('hidden');
$('#userInfoSection').addClass('hidden');
if (!Chat.isBlock) {
$('.ExitFromGroup,.div-Chat-Block').removeClass('hidden');
}
this.groupParticipants();
}
else {
$('.div-Chat-Participants').addClass('hidden');
$('.ExitFromGroup').addClass('hiden');
if (Chat.isBlock) {
$('.blkbtn-text').text('Unblock User');
}
$('.div-Chat-Groups').removeClass('hidden');
$('.btn_AddChatParticipants').addClass('hidden');
$('#userInfoSection').removeClass('hidden');
if (type === 'personal') {
$('#chatsContactsSection,#profileMediaLink,#starMessagesLink').addClass('hidden');
$('#profileDetailsSection').addClass('personal-profile');
this.getCurrentUserGroups();
}
else {
$('.blockUser').removeClass('hidden');
this.commongroups(Chat.contactId);
}
}
$('.star-messages-count').text(instance.getStarMessagesCount());
$('#profileMediaLink').click(function () {
$('#profileHeader,#profileDetailsWrap').addClass('hidden');
$('#mediaHeader,#profileMediaWrap').removeClass('hidden');
Chat.routes.push('profile-media');
instance.mediaFiles();
$('.div-Chat-Media').addClass('active');
});
$('.profile-media-tabs .nav-link').click(function () {
$('.profile-media-tabs .active').removeClass('active');
$(this).addClass('active');
var mediatype = $(this).attr('data-mediatype');
});
}
mediaFiles() {
const instance = this;
$('#Chat-Mediafiles').removeClass('tab-pane fade');
$('#Chat-docfiles,#links_files').addClass('tab-pane fade');
$('.countMediaFiles').removeClass('hidden');
$('.linkCount').addClass('hidden');
$('.countDocFiles').addClass('hidden');
var MediaFiles = Chat.mediadoclinks.filter(x => x.messageType == 6 || x.messageType == 7 || x.messageType == 8);
if (MediaFiles.length != 0) {
var imageshow;
$("#Chat-Media").html('');
var count = 0;
for (let i = 0; i < MediaFiles.length; i++) {
var messagedate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateFirst(MediaFiles[i].messageSentDate);
const formattedDate = moment(messagedate).format('DD-MM-YYYY');
if (!$(`#mediaByDate_${formattedDate}`).length) {
$("#Chat-Media").append(`
`);
}
if (MediaFiles[i].fileType == null) {
continue;
}
if (MediaFiles[i].fileType.match('image.*')) {
imageshow = MediaFiles[i].filePath;
}
else {
imageshow = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(MediaFiles[i].fileType);
}
const mediaHtml = instance._chatTemplate.getMediaFiles(MediaFiles[i].filePath, imageshow);
$(`#mediaByDate_${formattedDate} .media-files`).append(mediaHtml);
count++;
}
$(".countMediaFiles").text(count);
}
}
links() {
const instance = this;
$('.countMediaFiles').addClass('hidden');
$('.linkCount').removeClass('hidden');
$('.countDocFiles').addClass('hidden');
$('#links_files').removeClass('tab-pane fade');
$('#Chat-Mediafiles,#Chat-docfiles').addClass('tab-pane fade');
var count = 0;
var links = Chat.mediadoclinks.filter(x => x.messageType == 3);
if (links.length != 0) {
$('#Chat-Links').html('');
for (let i = 0; i < links.length; i++) {
var messagedate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateFirst(links[i].messageSentDate);
const formattedDate = moment(messagedate).format('DD-MM-YYYY');
if (!$(`#linksByDate_${formattedDate}`).length) {
$('#Chat-Links').append(`
`);
}
const linkHtml = instance._chatTemplate.getLinks(links[i].message);
$(`#linksByDate_${formattedDate} .link-files`).append(linkHtml);
count++;
}
$('.linkCount').text(count);
}
}
documentFiles() {
const instance = this;
$('#Chat-docfiles').removeClass('tab-pane fade');
$('#links_files,#Chat-Mediafiles').addClass('tab-pane fade');
$('.countMediaFiles').addClass('hidden');
$('.linkCount').addClass('hidden');
$('.countDocFiles').removeClass('hidden');
var docFiles = Chat.mediadoclinks.filter(x => x.messageType == 4 || x.messageType == 5 || x.messageType == 9);
if (docFiles.length != 0) {
$('#Chat-Docs').html('');
var imageshow;
var count = 0;
for (let i = 0; i < docFiles.length; i++) {
var messagedate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateFirst(docFiles[i].messageSentDate);
const formattedDate = moment(messagedate).format('DD-MM-YYYY');
if (!$(`#documentsByDate_${formattedDate}`).length) {
$("#Chat-Docs").append(`
`);
}
if (docFiles[i].fileType != null) {
if (docFiles[i].fileType.includes('audio') || docFiles[i].fileType.includes('video')) {
imageshow = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(docFiles[i].fileType);
}
else {
imageshow = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(docFiles[i].fileName.substring(docFiles[i].fileName.lastIndexOf('.') + 1));
}
}
const documentHtml = instance._chatTemplate.getMediaFiles(docFiles[i].filePath, imageshow);
$(`#documentsByDate_${formattedDate} .document-files`).append(documentHtml);
count++;
}
$('.countDocFiles').text(count);
}
}
updateProfile(filepath, chatgroupid) {
filepath = Chat.Instance().getFilePath(filepath);
if ($('.ImagePng_' + chatgroupid).find('.chatuser-img').length == 0) {
$('.ImagePng_' + chatgroupid).find('.avatar-text').remove();
$('.ImagePng_' + chatgroupid).append('
');
}
else {
$('.ImagePng_' + chatgroupid).find('.chatuser-img').attr('src', filepath);
}
var index = Chat.recentChats.findIndex(x => x.chatGroupId == chatgroupid);
if (index != -1) {
Chat.recentChats[index].photoUrl = filepath;
}
}
getFilePath(filepath) {
if (!filepath.startsWith('http')) {
filepath = Chat.Instance().getAppUrl() + filepath;
}
return filepath;
}
updateGroupName(groupName, chatgroupid) {
$(".grpname_" + chatgroupid).text(groupName);
}
commongroups(contactid) {
const instance = this;
var html = "";
var count = 0;
Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatgroups(contactid).then(function (response) {
var groups = response.result;
for (let i = 0; i < groups.length; i++) {
const grhtml = instance._chatTemplate.getgroupsbycid(groups[i].groupName);
html += grhtml;
count++;
}
$('.Chat-Chat-Group').html(html).removeClass('hidden');
$('.countChatGroups').text(count);
});
}
getCurrentUserGroups() {
const instance = this;
var html = "";
var count = 0;
var groups = Chat.recentChats.filter(chat => chat.isPrivate === false);
for (let i = 0; i < groups.length; i++) {
const grhtml = instance._chatTemplate.getgroupsbycid(groups[i].groupName);
html += grhtml;
count++;
}
$('.Chat-Chat-Group').html(html).removeClass('hidden');
$('.countChatGroups').text(count);
}
OnPrivateWindowOpened(chatGroupId) {
if (Chat.chatGroupId == chatGroupId) {
Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatsByGroupId(Chat.chatGroupId).then(function (response) {
Unibase.Platform.Connect.Components.Chat.chatlistarray = response.result;
Chat.Instance().updateBulkMessages();
});
}
}
updateBulkMessages() {
$('.messageslist').find('.fromuserlist').each(function () {
var id = $(this).attr('data-chatid');
if (!Chat.isPrivate && Chat.chatlistarray.find(x => x.chatId == id).messageDeliveredDate != null) {
Chat.Instance().updateMessageStatus(id);
}
else if (Chat.isPrivate) {
Chat.Instance().updateMessageStatus(id);
}
});
}
updateMessageStatus(chatId) {
var chatInfo = Chat.chatlistarray.find(x => x.chatId == chatId);
if (chatInfo != undefined) {
if (chatInfo.messageReadDate != null) {
$('.chat-messages_' + chatInfo.chatId).find('.msg_status').removeClass('msg-status-delivery').addClass('msg-status').html('
');
}
else {
$('.chat-messages_' + chatInfo.chatId).find('.msg_status').removeClass('msg-status').addClass('msg-status-delivery').html('
');
}
$('.chat-messages_' + chatInfo.chatId).find('.info').removeClass('hidden');
}
}
AddParticipants() {
$('.group-info-header').addClass('hidden');
$('.add-participants-header').removeClass('hidden');
Chat.visibleProfileEl = $('#profileDetailsWrap').children(':visible');
$('.div-Chat-AddParticipants').removeClass('hidden').siblings().addClass('hidden');
$('.Search_participants').removeClass('hidden');
$('#profileTabContent').addClass('hidden');
$('.btn_saveGroup').removeClass('hidden');
$('.input-search').removeClass('hidden');
$('#Chat-docfiles,#links_files,#Chat-Mediafiles').addClass('tab-pane fade');
Chat.routes.push('add-participants');
$('#txtSearchParticipants').val('');
$('.participant_avatar').html('');
$('.countChatAddParticipants').text(0);
this.addNewParticipants();
}
closeprivatewindow() {
const instance = this;
$('#chatConvoBody').addClass('hidden');
$('#chatsContactsSection').removeClass('hidden');
$('.morediv').attr("data-isfirst", 'true');
$('.morediv').attr("data-moreindex", '0');
$(".chatapp-users-list").removeClass("hidden");
$(".div_ContactsList").addClass("hidden");
$('._btncomment').addClass('active');
$('._btnDisplayUser').removeClass('active');
Chat.Instance().draftMessage();
$('.more_msg').addClass('d-none');
$('#input_msg_send_chatapp').val('');
$('#txtSearchChats').val('');
$('.typing').addClass('hidden');
$("#Chat-Media").html('');
Chat.fileitems = 0;
Chat.groupcontacts = [];
Chat.attachments = [];
$('#icon_send').addClass('hidden');
$('#chatEmojis').addClass('hidden');
$('.messageslist,.div_selected_files,#quoteMsgWrap').html('');
$('#quoteMsgWrap').addClass('hidden');
let user = Chat.currentUser;
let _packet = new Unibase.Platform.Connect.Server.Packets.Connect();
_packet.UserId = user.userId;
_packet.UserName = user.name;
_packet.ActiveChatGroupId = 0;
_packet.SessionId = user.sessionId;
_packet.UnibaseId = user.unibaseId;
instance._chatter.updateActiveChatGroup(_packet, null);
$('#cam_pic').length && instance.closecam();
Chat.Instance().displayRecentChats();
}
closechatgroup() {
Chat.groupcontacts = [];
$('#chatsContactsSection').removeClass('hidden');
$('#newGroupSection').addClass('hidden');
}
EditgroupDetails(groupname) {
$('#userProfileInfo').find('.Profile_name,.edit_grpdetails').addClass('hidden');
$('.edit_groupdetailsInput').val(groupname);
$('#editGroupInputWrap').removeClass('hidden');
$('.close_details').removeClass('hidden');
$(".new-group").html('');
$('.group_name').removeClass('hidden');
}
ConnectCall(ChatGroupId, ContactId, ContactName) {
let user = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
let _packet = new Unibase.Platform.Connect.Server.Packets.Conference();
_packet.ChatGroupId = Number(ChatGroupId);
_packet.FromUserId = Number(user.userId);
_packet.FromUserName = user.name;
_packet.ToUserId = Number(ContactId);
_packet.ToUserName = ContactName;
_packet.SessionId = user.sessionId;
Unibase.Platform.Connect.Components.Chat.instance._chatter.EnableAudio(_packet, null);
}
ConnectVedio(ChatGroupId, ContactId, ContactName) {
let user = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
let _packet = new Unibase.Platform.Connect.Server.Packets.Conference();
_packet.ChatGroupId = Number(ChatGroupId);
_packet.FromUserId = Number(user.userId);
_packet.FromUserName = user.name;
_packet.ToUserId = Number(ContactId);
_packet.ToUserName = ContactName;
_packet.SessionId = user.sessionId;
Unibase.Platform.Connect.Components.Chat.instance._chatter.EnableVedio(_packet, null);
}
EnableMeeting(MeetingId, UserId) {
var url = 'https://meet.bizgaze.com/lobby/' + MeetingId + '/' + UserId;
window.open(url, '');
}
copyscreen(event) {
if (event.clipboardData.files.length > 0) {
var src;
var files = event.clipboardData.files[0];
Chat.itemid++;
var item = { Files: files, Index: Chat.itemid };
Chat.attachments.push(item);
var reader = new FileReader();
reader.addEventListener("load", function () {
src = reader.result;
Chat.messagetype = Unibase.Platform.Connect.Enums.MessageType.Video;
Unibase.Platform.Connect.Components.Chat.Instance().renderthumbnail(src);
});
reader.readAsDataURL(files);
}
}
send() {
if (Chat.isBlock) {
Chat.Instance().BlockAlert();
return;
}
if (Chat.attachments.length > 0) {
Unibase.Platform.Connect.Components.Chat.Instance().sendfiles();
}
else {
Unibase.Platform.Connect.Components.Chat.Instance().sendmessage();
}
$('#input_msg_send_chatapp').val('').removeAttr('style');
$('#quoteMsgWrap').html('').addClass('hidden');
$('#icon_send').addClass('hidden');
}
onlinestatus(userid, onlinestatus) {
if (onlinestatus) {
if (Chat.privatewindow && Chat.isPrivate == true && Chat.contactId == userid) {
$('.lastseen_' + userid).text("Online");
Chat.Instance().updateBulkMessages();
}
else {
$(`#contact_badge_${userid}`).addClass('active');
Chat.connectedusers.push(userid);
}
}
else {
$(`#contact_badge_${userid}`).removeClass('active');
var lastseen = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocal(new Date());
$('.lastseen_' + userid).text(lastseen).attr('data-lastseen', new Date().toISOString());
Chat.recentChats.find(x => x.contactId == userid).lastSeen = new Date().toISOString();
Chat.connectedusers = Chat.connectedusers.filter(x => x != userid);
}
}
getMediaCount() {
Unibase.Platform.Connect.Managers.ChatManager.Instance().getMediaCount(Chat.chatGroupId).then(function (response) {
if (response.result != null) {
$('.media-links-count').text(response.result.length);
Chat.mediadoclinks = response.result;
}
});
}
updatestatus() {
if (Chat.connectedusers.length > 0) {
for (let i = 0; i < Chat.connectedusers.length; i++) {
$(`#contact_badge_${Chat.connectedusers[i]}`).addClass('active');
$('.lastseen_' + Chat.connectedusers[i]).text("Online");
}
}
}
voicemsg() {
const chunks = [];
var recorder, gumStream;
$('.record_div').removeClass('hidden');
const second = 1000;
var minute = second * 60;
var hour = minute * 60;
let countDown = new Date().getTime(), x = setInterval(function () {
let now = new Date().getTime(), distance = now - countDown;
document.getElementById('minutes').innerText = Math.floor((distance % (hour)) / (minute)).toString(),
document.getElementById('seconds').innerText = Math.floor((distance % (minute)) / second).toString();
}, second);
navigator.mediaDevices.getUserMedia({
audio: true
}).then(function (stream) {
gumStream = stream;
recorder.ondataavailable = function (e) {
chunks.push(e.data);
let blob = new Blob(chunks, { type: 'audio/webm' });
var reader = new FileReader();
reader.addEventListener("load", function () {
var audiofile = Chat.Instance().dataURLtoFile(reader.result, Chat.Instance().getUniqueAudioName());
var item = {
Files: audiofile,
Index: Chat.attachments.length
};
Chat.attachments.push(item);
Chat.Instance().sendfiles();
}, false);
reader.readAsDataURL(blob);
};
recorder.start();
});
$('.voicemsg-send-btn').click(function () {
document.getElementById('minutes').innerText = '0';
document.getElementById('seconds').innerText = '0';
$('.record_div').addClass('hidden');
if (recorder.state != 'inactive') {
recorder.stop();
gumStream.getAudioTracks()[0].stop();
}
clearInterval(x);
});
}
webcam() {
const instance = this;
var constraints = {
video: true
};
var html = instance._chatTemplate.getWebCamHtml();
$('.webcam').html(html).removeClass('hidden');
var camera = document.getElementById('cam_pic');
navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
camera.srcObject = stream;
Chat.streamdata = stream;
}).catch(function (err) {
let message = err.message;
if (err.name === 'NotReadableError') {
message = 'It looks like another app using the camera already.';
}
$('#cam_pic,#camerControls').addClass('hidden');
$('#camErrMsg').html(message).removeClass('hidden');
});
}
webcampicture() {
$('.cam_hidden').addClass('hidden');
$('.canvas_hidden').removeClass('hidden');
$('.back_cam').removeClass('d-none');
$('.send_pic').removeClass('d-none');
var photo = document.getElementById('cam_image');
var canvas = document.getElementById('chat_size');
var video = document.getElementById('cam_pic');
var context = canvas.getContext('2d');
context.drawImage(video, 0, 0, canvas.width, canvas.height);
var data = canvas.toDataURL('image/png');
photo.setAttribute('src', data);
}
getUniqueFileName() {
var date = new Date().getTime();
var uuid = 'xxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (date + Math.random() * 16) % 16 | 0;
date = Math.floor(date / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid + "-image.png";
}
getUniqueAudioName() {
var date = new Date().getTime();
var uuid = 'xxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (date + Math.random() * 16) % 16 | 0;
date = Math.floor(date / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid + "-voicemsg.webm";
}
webcamimage() {
var data = $('#cam_image').get(0);
data = data.currentSrc;
var filedata = Chat.Instance().dataURLtoFile(data, Chat.Instance().getUniqueFileName());
this.renderthumbnail(data);
var len = Chat.attachments.length;
var item = { Files: filedata, Index: len };
Chat.attachments.push(item);
this.closecam();
Chat.messagetype = 8;
}
dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
back_tocam() {
$('.cam_hidden').removeClass('hidden');
$('.canvas_hidden').addClass('hidden');
$('.back_cam').addClass('d-none');
$('.send_pic').addClass('d-none');
var camera = document.getElementById('cam_pic');
camera.srcObject = Chat.streamdata;
}
closecam() {
var camera = document.getElementById('cam_pic');
if (Chat.streamdata) {
Chat.streamdata.getTracks().forEach(function (track) {
track.stop();
camera.srcObject = null;
});
}
$('.webcam').html('').addClass('hidden');
}
status(users) {
Chat.connectedusers = [];
Chat.connectedusers = users;
}
loadEmojiCategories() {
const instance = this;
const emojiEl = $('#chatEmojis');
const emojiCategories = [128512, 128070, 127871, 128273, 127801, 128002, 128640, 9742, 9881];
const html = `
`;
emojiEl.html(html);
$('#emojiTabContent').html('');
const emojiCategoriesHtml = emojiCategories.map((cat) => {
return `
${cat} `;
}).join('');
instance.loadCategoryEmojis(128512);
$('#emojiCategoryTabs').html(emojiCategoriesHtml);
emojiEl.find('.emoji-cat:first,.tab-pane:first').addClass('show active');
}
loadCategoryEmojis(code) {
if (!$(`#categoryEmojis_${code}`).length) {
let html = `
`;
for (let i = 1; i <= 75; i++) {
html += `
${code} `;
code++;
}
html = `${html}
`;
$('#emojiTabContent').append(html);
}
}
appendEmojiToChatInput(emojicode) {
var textVal = $('#input_msg_send_chatapp').val();
$('#input_msg_send_chatapp').val(textVal + '' + emojicode).focus();
$('#icon_send').removeClass('hidden');
$('#recordaudio').addClass('hidden');
let user = Chat.currentUser;
let _packet = new Unibase.Platform.Connect.Server.Packets.Typing();
_packet.FromUserId = user.userId;
_packet.UserName = user.name;
_packet.ToUserId = Number($('#private_id').val());
_packet.ChatGroupId = Chat.chatGroupId;
_packet.Isprivate = Chat.isPrivate;
_packet.SessionId = user.sessionId;
Unibase.Platform.Connect.Components.Chat.instance._chatter.onTyping(_packet, null);
}
chatPopup(config) {
let popUpHtml = '';
if (!jQuery.isEmptyObject(config)) {
const buttons = config.buttons;
popUpHtml += ``;
popUpHtml += '';
$('#chatAppWrap').append(popUpHtml);
$('#chatPopUp').modal();
$('#chatPopUp').on('hidden.bs.modal', function () {
$('#chatPopUp,#chatPopupBackdrop').remove();
});
$('#chatPopUp').find('#chatPopupConfirmBtn,#chatPopupCancelBtn').click(function () {
if ($(this).hasClass('confirm-btn')) {
config.callback(true);
}
else {
config.callback(false);
}
$('#chatPopUp').modal('hide');
});
$('#chatPopupBackdrop').click(function () {
$('#chatPopUp').modal('hide');
});
}
}
getEmojiFontSize(msg) {
const instance = this;
let emojiFontSize = '';
const regexExp = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/gi;
if (regexExp.test(msg) && instance.isOnlyOneEmoji(msg)) {
emojiFontSize = 'font-25 line-height-10';
}
return emojiFontSize;
}
isOnlyOneEmoji(emoji) {
const emojiPattern = this._chatTemplate.getEmojiPattern();
return emojiPattern.test(emoji);
}
showProfileImgPreview() {
var contact;
if (Chat.isPrivate) {
contact = Chat.AllContacts.find(x => x.contactId == Chat.contactId);
}
else {
contact = Chat.AllContacts.find(x => x.chatGroupId == Chat.chatGroupId);
}
const popupHtml = `
`;
$('#chatAppWrap').append(popupHtml);
$('#chatImgPreviewModal').modal();
$('#chatImgPreviewModal').on('hidden.bs.modal', function () {
$('#chatImgPreviewModal,#chatPopupBackdrop').remove();
});
$('#chatPopupBackdrop').click(function () {
$('#chatImgPreviewModal').modal('hide');
});
}
loadChatFullScreen() {
if (Chat.isFullScreen) {
$('#chatPanelBodyWrap').addClass('chat-fullscreen');
$('#profileDetailsSection').html('');
$('#chatConvoBody').removeClass('hidden');
$('#chatMsgHeader').addClass('biz-bg-hightlight-color_10');
if ($('.list-groupchat .contactuser').length) {
$('.list-groupchat .contactuser').first().trigger('click');
}
else {
$('#chatNoConvoMsgWrap').removeClass('hidden');
$('#chatConvoBody').addClass('hidden');
}
$('#chatFullScreenBtn').text('Exit Fullscreen');
$('#fullScreenModal').on('show.bs.modal', function () {
$('#fullScreenModalBackdrop').removeClass('hidden');
});
$('#fullScreenModal').on('hidden.bs.modal', function () {
$('#fullScreenModalContent').empty();
$('#fullScreenModalBackdrop').addClass('hidden');
});
}
}
toggleChatFullScreen() {
const instance = this;
if (Chat.isFullScreen) {
Chat.isFullScreen = false;
$('.chat-group-item.biz-bg-hightlight-color_20').removeClass('biz-bg-hightlight-color_20');
$('#chatFullScreenBtn').text('Fullscreen');
$('#chatConvoBody').addClass('hidden').detach().insertAfter('#chatsContactsSection');
$('#chatConvoSection,#chatFullScreenModalWrap').remove();
$('#chatPanelBodyWrap').removeClass('chat-fullscreen').detach().appendTo('.settings-panel-wrap');
}
else {
Chat.isFullScreen = true;
$('#profileDetailsSection').html('');
$('#chatPanelBodyWrap').addClass('chat-fullscreen').detach().appendTo('#bizgaze_body');
$('#chatAppWrap').append(instance._chatTemplate.getChatFullScreenHtml());
$('#chatConvoBody').removeClass('hidden').detach().appendTo('#chatConvoSection');
$('#chatMsgHeader').addClass('biz-bg-hightlight-color_10');
if ($('.list-groupchat .contactuser').length) {
$('.list-groupchat .contactuser').first().trigger('click');
}
else {
$('#chatNoConvoMsgWrap').removeClass('hidden');
$('#chatConvoBody').addClass('hidden');
}
$('#chatFullScreenBtn').text('Exit Fullscreen');
$('#fullScreenModal').on('show.bs.modal', function () {
$('#fullScreenModalBackdrop').removeClass('hidden');
});
$('#fullScreenModal').on('hidden.bs.modal', function () {
$('#fullScreenModalContent').empty();
$('#fullScreenModalBackdrop').addClass('hidden');
});
}
setTimeout(() => {
eval(`$('#chatAppWrap .simple-scroll-bar').each(function(i,e){new SimpleBar(e);});`);
}, 200);
}
refreshlastseen() {
if (Chat.isBlock) {
$('.lastseen_' + Chat.contactId).text('');
return;
}
var text = $('.lastseen_' + Chat.contactId).text();
if (text != "Online" && Chat.isPrivate) {
var lastseen = $('.lastseen_' + Chat.contactId).attr('data-lastseen') == '' ? '' : Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocal($('.lastseen_' + Chat.contactId).attr('data-lastseen'));
if (lastseen != 'Invalid date') {
$('.lastseen_' + Chat.contactId).text(lastseen);
}
}
}
highlightActiveChat() {
const activeChatId = $('#hfChats_chatGroupId').val();
$('.chat-group-item.biz-bg-hightlight-color_20').removeClass('biz-bg-hightlight-color_20');
$(`.chat-group-item.userChat_${activeChatId}`).addClass('biz-bg-hightlight-color_20');
}
loadgroupcontacts() {
const instance = this;
var RecipientId;
let contacts = Chat.Instance().getContacts().filter(x => x.contactId != this.currentUser.userId);
const newgrp = instance._chatTemplate.getGroupContactsTemplate(contacts);
$(".list-chatgroup").html(newgrp);
$("input[name='chatgroupuser']").click(function (e) {
e.stopPropagation();
$('.btn_saveGroup').removeClass('hidden');
if (!$(this).is(":checked")) {
RecipientId = Number($(this).val());
Chat.groupcontacts = Chat.groupcontacts.filter(x => x.RecipientId != RecipientId);
if (Chat.groupcontacts.length == 0) {
$(".btn_saveGroup").addClass("hidden");
}
}
else {
RecipientId = +$(this).val();
var req = new Unibase.Platform.Connect.Requests.ChatRecipient();
req.RecipientId = RecipientId;
Chat.groupcontacts.push(req);
}
instance.appendSelectedGroupParticipants();
});
$('.list-chatgroup .groupuser').click(function (e) {
$(this).find('input[name="chatgroupuser"]').trigger('click');
});
$('.list-chatgroup .chat-call-options').click(function (e) {
e.stopPropagation();
});
$('#clearGroupContactsSearch').click(function () {
$(this).addClass('hidden');
$('#txtSearchParticipants').val('').trigger('keyup');
});
}
forwardMessage(chatid) {
var isSelected = false;
let user = Chat.currentUser;
let index = Unibase.Platform.Connect.Components.Chat.chatlistarray.findIndex(x => x.chatId == chatid);
let req = new Unibase.Platform.Connect.Requests.Chat();
req.FileName = Chat.chatlistarray[index].fileName;
req.FilePath = Chat.chatlistarray[index].filePath;
req.FileType = Chat.chatlistarray[index].fileType;
req.ChatGroupId = 0;
req.FromUserId = user.userId;
req.Message = Chat.chatlistarray[index].message;
req.MessageType = Chat.chatlistarray[index].messageType;
$('input[name ="forwardcontact"]').each(function () {
if ($(this).is(':checked')) {
isSelected = true;
req.ToUserId = Number($(this).attr('data-contactid'));
req.ChatGroupId = Number($(this).attr('data-chatgroupid'));
Unibase.Platform.Connect.Managers.ChatManager.Instance().saveChat(req).then(function (response) {
if (response.result != null) {
MessageHelper.Instance().showSuccess("Successfully forwarded", "");
var packet = Chat.Instance().reqToClientMessagePacket(response.result);
var contactid = response.result.toUserId;
var id = contactid;
packet.isPrivate = true;
if (contactid == 0) {
packet.isPrivate = false;
id = response.result.chatGroupId;
}
var contactname = $('.frdid_' + id).attr('data-contactname');
var photoUrl = $('.frdid_' + id).attr('data-photourl');
packet.fromUserId = response.result.toUserId;
packet.chatGroupId = response.result.chatGroupId;
packet.fromUserName = contactname;
packet.messageSentDate = new Date();
packet.toUserPhotoUrl = photoUrl;
packet.lastSeen = '';
Chat.Instance().newChat(packet, true);
if (Chat.chatGroupId == response.result.chatGroupId && Chat.contactId == response.result.toUserId) {
packet.fromUserId = Chat.currentUser.userId;
Chat.Instance().newMessage(packet);
}
}
else {
alert("Failed to forward");
}
});
}
});
if (!isSelected) {
alert('Please select contacts');
return;
}
$('.forward-contacts-section').addClass('hidden');
$('.chat-convo-body').removeClass('hidden');
}
forwardContacts() {
const instance = this;
var contacts, html;
contacts = Chat.Instance().getContacts().filter(x => x.ContactId != Chat.currentUser.userId);
var groups = Chat.recentChats.filter(x => x.isPrivate == false);
var mergedContacts = contacts.concat(groups);
html = instance._chatTemplate.getForwardContacts(mergedContacts);
$('.forwardcontacts_list').html(html);
}
groupParticipants() {
Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatRecipientsByGroupId(Chat.chatGroupId).then(function (response) {
Chat.grpdetails = response.result;
if (Chat.grpdetails != null) {
$('.Notify-Chat-Participants').html('');
Unibase.Platform.Connect.Components.Chat.Instance().participantsList(Chat.grpdetails);
}
});
}
participantsList(participants) {
var isleft = participants.find(x => x.recipientId == Chat.currentUser.userId).isBlock;
Chat.recentChats.find(x => x.chatGroupId == participants[0].chatGroupId).isBlock = isleft;
if (Chat.chatGroupId == participants[0].chatGroupId) {
Chat.grpdetails = participants;
participants = participants.filter(x => x.isBlock == false);
if (isleft) {
$('.ExitFromGroup').addClass('hidden');
$('#chatFooter').addClass('hidden');
$('.remove_template').removeClass('hidden');
}
else {
$('.ExitFromGroup').removeClass('hidden');
$('#chatFooter').removeClass('hidden');
$('.remove_template').addClass('hidden');
$('.lastseen_0').text(participants.length + " participants");
}
Chat.isBlock = isleft;
if (Chat.profiledetailswindow) {
const adminsort = participants.sort((a, b) => b.isAdmin - a.isAdmin);
for (let i = 0; i < adminsort.length; i++) {
if ($('.participant_' + adminsort[i].recipientId).length == 0) {
var html = Unibase.Platform.Connect.Components.ChatTemplate.Instance().getGroupParticipants(adminsort[i]);
$('.Notify-Chat-Participants').append(html);
}
else {
continue;
}
}
$('.countChatParticipants').text(adminsort.length);
}
$('.partipant-count').text(participants.length + " participants");
}
}
searchParticipants(searchClass, mainClass, defaultClass = '') {
var matchedCount = 0;
var searchTerm = $('.' + searchClass).val().toString().toLowerCase();
$('.' + mainClass).each(function () {
var contactname = $(this).attr('data-contactname').toLowerCase();
if (contactname.includes(searchTerm)) {
$(this).removeClass('hidden');
matchedCount++;
}
else {
$(this).addClass('hidden');
}
});
if (matchedCount == 0 && defaultClass != '') {
$('.' + defaultClass).removeClass('d-none');
}
}
nextAdmin() {
var isadminlogin = $('.participents_' + Chat.currentUser.userId).attr('data-isadmin') === 'true';
var contactid = Number($('.participents').find('.isadmin_false').first().attr('data-contactId'));
if (isadminlogin && contactid != 0) {
Unibase.Platform.Connect.Managers.ChatManager.Instance().updateAdminStatus(Chat.chatGroupId, contactid, true).then(function () {
$('.participant_' + contactid).attr('data-isadmin', 'true');
$('.contactname_' + contactid).html('
Admin ');
});
}
}
adminOptions() {
var isAdminLogin = $('.participant_' + Chat.currentUser.userId).attr('data-isadmin') === 'true';
var data = event.currentTarget;
var isAdmin = $(data).attr('data-isadmin') === 'true';
var contactid = Number($(data).attr('data-contactid'));
var chatgroupid = Number($(data).attr('data-chatgroupid'));
var options = "";
if (isAdminLogin) {
options = '
Remove ';
if (!isAdmin) {
options += '
Make Admin ';
}
else {
options += '
Remove Admin ';
}
}
options += `
Send Message `;
$(data).find('.grpoptionshtml').html(options);
}
displayRecentChats() {
var contacts = Chat.contacts.filter(x => x.contactId != Chat.currentUser.userId);
$('#chatHeaderNavTabs .active').removeClass('active');
$('._btncomment').addClass('active');
$('.chatapp-users-list').removeClass('hidden');
$('.div_ContactsList').addClass('hidden');
Chat.groupcontacts = [];
Chat.grpdetails = [];
var zerochats = Chat.recentChats.length == 0 ? "" : "hidden";
var html = `
No Chats found `;
for (var i = 0; i < Chat.recentChats.length; i++) {
contacts = contacts.filter(x => x.contactId != Chat.recentChats[i].contactId);
}
var a = Chat.recentChats.filter(x => x.lastMessage == '').sort((a, b) => a.contactName.localeCompare(b.contactName));
var b = Chat.recentChats.filter(x => x.lastMessage != '');
const sortByDate = b => {
const sorter = (x, y) => {
return new Date(y.messageLastUpdatedDate).getTime() - new Date(x.messageLastUpdatedDate).getTime();
};
b.sort(sorter);
};
sortByDate(b);
var c = b.concat(a);
var allconatcts = c.concat(contacts);
Chat.AllContacts = c.concat(Chat.contacts);
for (let i = 0; i < allconatcts.length; i++) {
if (i == c.length) {
html += '
Contacts ';
}
;
html += Chat.Instance()._chatTemplate.getRecentChatsTemplate(allconatcts[i]);
}
$('.list-groupchat').html(html);
Chat.Instance().updatestatus();
if (Chat.isFullScreen) {
if ($('.messageslist').is(':empty')) {
$('.list-groupchat .contactuser').first().trigger('click');
}
else {
this.highlightActiveChat();
}
}
}
getRecentChats() {
Unibase.Platform.Connect.Managers.ChatManager.Instance().getChats().then(function (response) {
if (response.result != null) {
Chat.recentChats = response.result;
Chat.Instance().displayRecentChats();
}
});
}
removeParticipants(recipientId, chatGroupId) {
if (Chat.currentUser.userId == recipientId) {
if (Chat.chatGroupId == chatGroupId) {
$('.ExitFromGroup').addClass('hidden');
$('#chatFooter').addClass('hidden');
$('.remove_template').removeClass('hidden');
$('.Profile_image').attr("onchange", "javascript:;");
$('.save_changes').attr("onclick", "javascript:;");
$('.edit_grpdetails').attr("onclick", "javascript:;");
$('.btn_AddChatParticipants').addClass('hidden');
$('.lastseen_0').text('');
$('.user-last-chat_' + Chat.chatGroupId).removeClass('hidden');
$('.typing_active_' + Chat.chatGroupId).addClass('hidden').text('');
$('.typing_active_' + Chat.chatGroupId).attr('data-typingcontacts', '');
}
var index = Chat.recentChats.findIndex(x => x.chatGroupId == chatGroupId);
if (index != -1) {
Chat.recentChats[index].isBlock = true;
}
Chat.isBlock = true;
}
var participantCount = Number($('.countChatParticipants').text());
$('.countChatParticipants').text(participantCount - 1);
$('#groupParticipantUser_' + recipientId).remove();
}
makeAdmin(RecipientId, chatGroupId) {
var style = "";
if (chatGroupId == Chat.chatGroupId) {
if (RecipientId == Chat.currentUser.userId) {
$('.participant_' + Chat.currentUser.userId).attr('data-isadmin', 'true');
$('.btn_AddChatParticipants').removeClass('hidden');
$().removeClass('hidden');
style = 'style="position:absolute;right:26px"';
}
else {
$('.fromParticipant_' + RecipientId).attr('data-isadmin', 'true');
}
$('.participant_' + RecipientId).removeClass('isadmin_false').addClass('isadmin_true');
$('#contactName_' + RecipientId).append('
Admin ');
}
}
removeAdmin(RecipientId, chatGroupId) {
if (Chat.chatGroupId == chatGroupId) {
if (Chat.currentUser.userId == RecipientId) {
$('.participant_' + Chat.currentUser.userId).attr('data-isadmin', 'false');
$('.btn_AddChatParticipants').addClass('hidden');
$('.btn_AddChatParticipants').addClass('hidden');
$('.Profile_image').attr("onchange", "javascript:;");
$('.save_changes').attr("onclick", "javascript:;");
$('.edit_grpdetails').attr("onclick", "javascript:;");
}
else {
$('.fromParticipant_' + RecipientId).attr('data-isadmin', 'false');
}
$('.participant_' + RecipientId).removeClass('isadmin_true').addClass('isadmin_false');
$('#contactName_' + RecipientId).find('.recipientbadge').remove();
}
}
addParticipants(chatGrpDetails) {
Unibase.Platform.Connect.Components.Chat.Instance().participantsList(chatGrpDetails);
}
onMessageReceived(packet) {
Unibase.Platform.Connect.Components.Chat.chatlistarray.push(packet);
if ((Chat.chatGroupId == packet.chatGroupId)) {
Chat.Instance().newMessage(packet);
}
else {
Chat.Instance().newChat(packet);
}
Chat.mediadoclinks = Chat.chatlistarray.filter(x => x.messageType != 1 && 2).filter(x => x.isDelete == false).filter(x => x.groupMessageType == 0);
}
newChat(packet, disableunreadcount = false) {
var messagecount = Number($('.unread_messages_' + packet.chatGroupId + '').text());
var obj = Chat.recentChats.find(x => x.chatGroupId == packet.chatGroupId);
if (obj == undefined) {
obj = new Unibase.Platform.Connect.Infos.ChatContact();
obj.isPrivate = packet.isPrivate;
obj.contactId = packet.fromUserId;
obj.contactName = packet.fromUserName;
obj.chatGroupId = packet.chatGroupId;
if (!obj.isPrivate) {
obj.contactName = packet.groupName;
obj.photoUrl = packet.toUserPhotoUrl;
obj.contactId = 0;
}
else {
obj.photoUrl = Chat.contacts.find(x => x.contactId == packet.fromUserId).photoUrl;
}
Chat.recentChats.push(obj);
}
else {
$('.list-groupchat').find('.userChat_' + packet.chatGroupId).remove();
}
var message = "", lastChatid = "", unreadcount = 0;
obj.messageLastUpdatedDate = packet.messageSentDate;
if (packet.groupMessageType == 0) {
message = packet.message;
if (packet.filePath != null) {
message = packet.fileName;
}
message = message;
lastChatid = packet.chatId;
if (Chat.chatGroupId != packet.chatGroupId && !disableunreadcount) {
unreadcount = messagecount + 1;
}
}
obj.lastMessage = message;
obj.lastChatId = lastChatid;
obj.unReadMessagesCount = unreadcount;
Chat.recentChats[Chat.recentChats.findIndex(x => x.chatGroupId == packet.chatGroupId)] = obj;
var html = Chat.Instance()._chatTemplate.getRecentChatsTemplate(obj);
$('.list-groupchat').prepend(html);
$('.defaultClass').addClass('hidden');
this.updatestatus();
}
closeAddParticipants() {
$(".add_participants_search").val('');
$('.group-info-header').removeClass('hidden');
$('.add-participants-header').addClass('hidden');
$('.div-Chat-AddParticipants').addClass('hidden');
$('.Search_participants').addClass('hidden');
$(Chat.visibleProfileEl).removeClass('hidden');
}
closeMediaInfo() {
$('#profileHeader,#profileDetailsWrap').removeClass('hidden');
$('#mediaHeader,#profileMediaWrap').addClass('hidden');
$('.media-links-count').text(Chat.mediadoclinks.length);
}
closeContactInfo() {
$('#profileDetailsSection').addClass('hidden');
$('.participants_search').val('');
if (!Chat.isFullScreen) {
if ($('#profileDetailsSection').hasClass('personal-profile')) {
$('#profileDetailsSection').removeClass('personal-profile');
$('#chatsContactsSection').removeClass('hidden');
}
else {
$('#chatConvoBody').removeClass('hidden');
}
}
else {
$('#fullScreenModal').modal('hide');
}
}
filetemplate(fileinfo) {
var msghtml = '';
const fileName = fileinfo.name;
const fileType = fileinfo.type;
var fileimagepath;
let imgClass = '';
let audioplayBtnHtml = '';
var messagedate = moment.utc(new Date().toString()).format("MM-DD-YYYY");
if ($('#date_' + messagedate).length == 0) {
msghtml += Chat.Instance().getMessageDate(messagedate);
}
fileimagepath = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(fileType);
msghtml += '
' + audioplayBtnHtml + '
' + fileName + '
';
$('.messageslist').append(msghtml);
}
chatdown() {
let lastelement = $('.chat-message-wrap').last();
lastelement[0].scrollIntoView();
$('.chat_down').addClass('hidden');
}
showchatdownicon() {
var lastelement = $('.chat-message-wrap').last();
if (lastelement.length == 0) {
return;
}
var a = lastelement[0].classList[0];
const box = document.querySelector('.' + a);
const rect = box.getBoundingClientRect();
var isInViewport = rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth);
if (rect.top < 0) {
isInViewport = true;
}
if (isInViewport) {
$('.chat_down').addClass('hidden');
}
else {
$('.chat_down').removeClass('hidden');
}
}
readmore(chatid) {
$('.read-more_' + chatid).addClass('hidden');
$('.remain-data_' + chatid).removeClass('hidden');
$('.doted_' + chatid).addClass('hidden');
}
static Instance() {
if (this.instance === undefined)
this.instance = new Chat();
return this.instance;
}
}
Chat.chatlistarray = [];
Chat.grpdetails = [];
Chat.contacts = [];
Chat.groupcontacts = [];
Chat.recentChats = [];
Chat.MultiSelect = [];
Chat.messagesid = [];
Chat.connectedusers = [];
Chat.istyping = true;
Chat.attachments = [];
Chat.fileitems = 0;
Chat.itemid = 0;
Chat.isEdit = false;
Chat.messagetype = 0;
Chat.appUrl = '';
Chat.contactsCount = 0;
Chat.MediaFiles = [];
Chat.contactId = 0;
Chat.chatGroupId = 0;
Chat.isPrivate = false;
Chat.isBlock = false;
Chat.isFullScreen = false;
Chat.routes = [];
Chat.AllContacts = [];
Chat.mediadoclinks = [];
Components.Chat = Chat;
})(Components = Connect.Components || (Connect.Components = {}));
})(Connect = Platform.Connect || (Platform.Connect = {}));
})(Platform = Unibase.Platform || (Unibase.Platform = {}));
})(Unibase || (Unibase = {}));