var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var Unibase; (function (Unibase) { let Platform; (function (Platform) { let Connect; (function (Connect) { let Components; (function (Components) { class Chat extends Platform.Core.BaseComponent { constructor() { super(); this._chatmanager = Platform.Connect.Managers.ChatManager.Instance(); this._chatter = Unibase.Platform.Connect.Components.Chatter.Instance(); this._chatTemplate = Unibase.Platform.Connect.Components.ChatTemplate.Instance(); Chat.currentUser = Unibase.Platform.Membership.Infos.Identity.currentUser; } cssFiles() { var cssfiles = ["tenants/themes/compact/css/style.chat.css"]; return cssfiles; } jsFiles() { var jsfiles = [ 'platform/connect/requests/chat.js', 'platform/connect/requests/chatgroup.js', 'platform/connect/requests/chatrecipient.js', 'platform/core/infos/status.js', 'platform/hubs/providers/basepacket.js', 'platform/core/helpers/datetimehelper/datetimehelper.js', 'platform/connect/enums/groupmessagetype.js', 'platform/connect/enums/messagetype.js', 'platform/connect/components/chat.template.js', 'platform/connect/infos/chatcontact.js' ]; return jsfiles; } html(id, containerid) { throw new Error("Method not implemented."); } load(id, containerid, callback) { const instance = this; window.addEventListener("paste", this.copyscreen); $(window).keydown(function (e) { if (e.shiftKey || e.ctrlKey && e.which == 13) { return; } else if (e.which == 13) { e.preventDefault(); } }); $('.footer-multiaction').click(function () { $('.message-checkbox').prop("checked", false); $('.msg-check').addClass('hidden'); $('#chatMsgHeader,.msg-input-wrap').removeClass('hidden').addClass('d-flex'); $('.msg-multiaction-btns').addClass('hidden'); $('#selectedMsgsCountHeader').addClass('hidden'); $('.chatoptions-wrapper').removeClass('hidden'); $('.selected-msgs-count').text(0); var item = $(this).attr("data-item"); switch (item) { case "Delete": Chat.Instance().MultiDelete(); break; case "Copy": Chat.Instance().multiplecopy(); break; case "Star": Chat.Instance().multiplestar(); break; case "Forward": Chat.Instance().forwardDesign("Multi-Forward"); break; } }); $('#input_msg_send_chatapp').keyup(function (e) { const msgInput = $(this); instance.autoAdjustMsgInputHeight(); var val = msgInput.val().toString(); $('.deleiverduserslist').html(''); $('.readuserslist').html(''); $('.message-info').addClass('hidden'); $('#chatEmojis').addClass('hidden'); $('.msg-compose-options').addClass('hidden'); if ((e.shiftKey) && e.which == 13) { return; } else if (e.ctrlKey && e.which == 13) { msgInput.val(val + '\n'); } else if (e.which == 13) { e.preventDefault(); } if (msgInput.val() == "" && e.which == 8 || e.which == 46) { $('#icon_send,.div_CLose').addClass('hidden'); $('.msg-compose-options').removeClass('hidden'); $('#recordaudio').removeClass('hidden'); Chat.istyping = true; 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.onTypingStop(_packet, null); } else if (e.which == 13 && !e.ctrlKey) { var val = msgInput.val().toString(); val = val.trim(); if (val != "" || Chat.attachments.length > 0) { if (Chat.isEdit == true) { Unibase.Platform.Connect.Components.Chat.Instance().edit(Chat.chatid); Chat.isEdit = false; } else if (msgInput.val() != "" || msgInput.val() != null) { Unibase.Platform.Connect.Components.Chat.Instance().send(); $('#icon_send').addClass('hidden'); $('#recordaudio').removeClass('hidden'); $('.msg-compose-options').removeClass('hidden'); msgInput.val('').removeAttr('style'); ; Chat.fileitems = 0; Chat.istyping = true; Chat.attachments = []; 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.onTypingStop(_packet, null); } } } else { if (Chat.istyping) { Chat.istyping = false; $('#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); } } const mentionableContactsEl = $('#mentionableContactList'); if (val != undefined && (val.trim() == "@" || val.includes("@"))) { var grpdeatails = Chat.grpdetails; if (Chat.isPrivate) { var contactInfo = Chat.Instance().getContactInfo(Chat.contactId, Chat.chatGroupId); const contactObj = { contactId: Chat.contactId, contactName: contactInfo.contactName, photoUrl: contactInfo.photoUrl }; const contactsHtml = instance._chatTemplate.getMentionableContactTemplate(contactObj); mentionableContactsEl.html(contactsHtml); } else { var k = val.split('@'); var a = k[k.length - 1]; grpdeatails = grpdeatails.filter(x => x.contactName.toLowerCase().includes(a.toLowerCase())); let contactsHtml = ''; for (var i = 0; i < grpdeatails.length; i++) { const contact = grpdeatails[i]; if (Chat.currentUser.userId != contact.recipientId) { contactsHtml += instance._chatTemplate.getMentionableContactTemplate(contact); } } mentionableContactsEl.html(contactsHtml); } mentionableContactsEl.removeClass('hidden'); $('.mentionble-contact').click(function () { var s = val.split(" "); var j = s.slice(0, s.length - 1).join(" "); var name = j + " " + $(this).attr('data-contactname') + " "; $('#input_msg_send_chatapp').val(name).focus(); instance.autoAdjustMsgInputHeight(); mentionableContactsEl.addClass('hidden'); }); if (Chat.isPrivate) { if ((e.keyCode >= 65 && e.keyCode <= 90) || e.keyCode == 32) { mentionableContactsEl.addClass('hidden'); } } } else { mentionableContactsEl.addClass('hidden'); } }); $('#input_msg_send_chatapp').blur(function (e) { $('.msg-compose-options').removeClass('hidden'); if (!$(e.relatedTarget).closest('.mentionable-contact-list').length) { $('#mentionableContactList').addClass('hidden'); } instance.autoAdjustMsgInputHeight(); }); $('#input_msg_send_chatapp').focus(function () { const val = $(this).val().toString(); if (val != undefined && (val.trim() == "@" || val.includes("@"))) { $('#mentionableContactList').removeClass('hidden'); } else { $('#mentionableContactList').addClass('hidden'); } instance.autoAdjustMsgInputHeight(); }); $('#icon_send').click(function () { if (Chat.isEdit == true) { Unibase.Platform.Connect.Components.Chat.Instance().edit(Chat.chatid); Chat.isEdit = false; 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.onTypingStop(_packet, null); } else { Unibase.Platform.Connect.Components.Chat.Instance().send(); $('#icon_send,#chatEmojis').addClass('hidden'); $('.msg-compose-options').removeClass('hidden'); $('#recordaudio').removeClass('hidden'); $('.quotemessage_' + Chat.chatGroupId).remove(''); Chat.fileitems = 0; Chat.attachments = []; if ($('.quotemessage_' + Chat.chatGroupId).text() != "" && $('#input_msg_send_chatapp').val() != "") { $('.quotemessage_' + Chat.chatGroupId).remove(''); } Chat.istyping = true; 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.onTypingStop(_packet, null); } }); $('#txt_chats_clearSearch').click(function () { $(this).addClass('hidden'); $('#txtSearchChats').val('').trigger('keyup'); }); $('#clearContactsSearch').click(function () { $(this).addClass('hidden'); $('#txtSearchContacts').val('').trigger('keyup'); }); $('#chatEmojiIcon').click(function () { $('#chatEmojis').toggleClass('hidden'); }); $('#closeMsgMultiActionBtn').click(function () { $('#chatMsgHeader,.msg-input-wrap,.chatoptions-wrapper').removeClass('hidden'); $('.msg-input-wrap').addClass('d-flex'); $('#selectedMsgsCountHeader,.messageslist .msg-check').addClass('hidden'); $('.msg-multiaction-btns').addClass('hidden'); $('.message-checkbox').prop("checked", false); $('.selected-msgs-count').text(0); $('#chatFooter').removeClass('hidden'); Chat.MultiSelect = []; }); $('#closeChatPanel').click(function () { $(".settings-panel-close").click(); if (Chat.isFullScreen) { Chat.isFullScreen = false; $('#cam_pic').length && instance.closecam(); $('#chatPanelBodyWrap').html('').removeClass('chat-fullscreen').detach().appendTo('.settings-panel-wrap'); } Chat.routes = []; }); $('#viewMyProfile').click(function () { Chat.isPrivate = true; Chat.contactId = instance.currentUser.userId; instance.profileDetails('personal'); }); } autoAdjustMsgInputHeight() { const msgInput = $('#input_msg_send_chatapp'); msgInput.css('height', '0px'); const height = Math.min(20 * 4, msgInput[0].scrollHeight); msgInput.css('height', `${height}px`); } loadchats() { const instance = this; let chathtml = instance._chatTemplate.getChatTemplate(); $("#chatPanelBodyWrap").html(chathtml); $(".biz-settings-panel").css({ "background": "white" }); $(".notification-footer").addClass("d-none"); instance.load(0, '', null); instance.loadCssFiles(); instance.loadJsFiles(); instance.loadEmojiCategories(); if (Chat.isFullScreen) { instance.loadChatFullScreen(); } Chat.routes = []; Chat.routes.push('chat-list'); } loadJsFiles() { var jsfiles = Unibase.Platform.Connect.Components.Chat.Instance().jsFiles(); Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(jsfiles, function () { Unibase.Platform.Connect.Components.Chat.Instance().getDefaultContacts(); Unibase.Platform.Connect.Components.Chat.Instance().getRecentChats(); }); } getContactInfo(contactId = 0, ChatGroupId = 0) { var filter = ChatGroupId == 0 ? "contactId" : "chatGroupId"; var filterValue = ChatGroupId == 0 ? contactId : ChatGroupId; var contacts = Chat.recentChats.find(x => x[filter] == filterValue); if (contacts == undefined) { contacts = Chat.contacts.find(x => x.contactId == contactId); } return contacts; } getDefaultContacts() { this._chatmanager.getChatContacts().then(function (response) { if (response.result != null && response.result.length > 0) { Chat.contacts = response.result; var countlength = Chat.contacts.length; var chatsplit = countlength % 4; while (true) { if (chatsplit != 0) { countlength = countlength - 1; chatsplit = countlength % 4; } if (chatsplit == 0) { break; } } Chat.contactsCount = countlength / 4; } }); } getAppUrl() { if (Chat.appUrl == '') { Chat.appUrl = _appsettings.server_url(); if (_appsettings.asset_url() != undefined && _appsettings.asset_url() != null && _appsettings.asset_url() != '') { Chat.appUrl = _appsettings.asset_url(); } } return Chat.appUrl; } getContacts(term = "") { var contacts = Chat.contacts; if (term != "") { contacts = contacts.filter(x => x.contactName.toLowerCase().includes(term.toLowerCase())); } return contacts; } muteAlert() { var contactInfo = Chat.Instance().getContactInfo(Chat.contactId, Chat.chatGroupId); var text = contactInfo.isMute ? "Unmute " : "Mute "; Chat.Instance().chatPopup({ message: text + contactInfo.contactName + " ?", buttons: { confirm: { label: text }, cancel: { label: 'Cancel' } }, callback: (result) => { if (result) { Unibase.Platform.Connect.Managers.ChatManager.Instance().MuteNotifications(Chat.chatGroupId).then(function (response) { if (response.status == Unibase.Data.Status.Success) { Chat.recentChats.find(x => x.contactId == Chat.contactId).isMute = response.result.isMute; var muteText = response.result.isMute ? "Unmute" : "Mute"; $('.mute-option').text(muteText); if (response.result.isMute) { $(`.userChat_${Chat.chatGroupId} .mute-status-icon`).removeClass('hidden'); } else { $(`.userChat_${Chat.chatGroupId} .mute-status-icon`).addClass('hidden'); } } }); } } }); } loadCssFiles() { var csssfiles = Unibase.Platform.Connect.Components.Chat.Instance().cssFiles(); Unibase.Platform.Helpers.FileCacheHelper.Instance().loadCssFiles(csssfiles, function () { }); } Displaycontacts() { $('#chatHeaderNavTabs .active').removeClass('active'); $('._btnDisplayUser').addClass('active'); $('#txtSearchContacts').val(""); $('.contacts_more').text(0); $(".chatapp-users-list").addClass("hidden"); $(".div_ContactsList").removeClass("hidden"); Chat.chatGroupId = 0; Chat.chatwindow = false; Chat.privatewindow = false; Chat.profiledetailswindow = false; $('.list-chat-contacts').html(''); if ($.inArray('contact-list', Chat.routes) === -1) { Chat.routes.push('contact-list'); } $('#txtSearchChats').val(''); Unibase.Platform.Connect.Components.Chat.Instance().loadContacts(); } loadContacts(IsSearch = false) { const instance = this; let term = $("#txtSearchContacts").val().toString().trim(); var contacts = Chat.Instance().getContacts(term); var indexlength = 0; if (IsSearch) { $('.list-chat-contacts').html(''); $('.contacts_more').text(0); } if (term != "") { $('.contacts-morebtn').addClass('d-none'); } else { contacts = $.extend(true, [], contacts); var count = Number($('.contacts_more').text()); if (Chat.contacts.length < 20) { Chat.contactsCount = Chat.contacts.length; } contacts = contacts.splice(count, Chat.contactsCount); $('.contacts_more').text(count + Chat.contactsCount); if (Chat.contacts.length <= Number($('.contacts_more').text())) { $('.contacts-morebtn').addClass('d-none'); } else { $('.contacts-morebtn').removeClass('d-none'); } indexlength = $('.first-letter-heading').length; } var html = instance._chatTemplate.getContactsTemplate(contacts); (IsSearch) ? $('.list-chat-contacts').html(html) : $('.list-chat-contacts').append(html); if (indexlength != 0) { var firstLetter = $('.first-letter-heading').get(indexlength - 1).innerText; var lastLetter = $('.first-letter-heading').get(indexlength).innerText; (firstLetter == lastLetter) ? $('.first-letter-heading').get(indexlength).remove() : ''; } } makeACall() { $('#chatHeaderNavTabs .active').removeClass('active'); $('._btnmakeacall').addClass('active'); $('.div-chat-search').addClass('hidden'); $(".list-chat-contacts,.list-groupchat").html('').append('
  • No calls Found
  • '); Chat.chatGroupId = 0; } multiaction() { var c = 1; for (var i = 0; i < c; i++) { if (!$('.more_msg').hasClass('d-none')) { $('.morediv').trigger('click'); c++; } } $('.msg-check').removeClass('hidden'); $('.message-body').not('.deleted-msg-body').find('.msg-check').removeClass('hidden'); $('.msg-multiaction-btns').removeClass('hidden'); $('.msg-input-wrap').addClass('hidden').removeClass('d-flex'); $('#selectedMsgsCountHeader').removeClass('hidden'); $('#chatMsgHeader').addClass('hidden'); $('.chatoptions-wrapper').addClass('hidden'); $(".selected-msgs-count").html(`${Chat.MultiSelect.length}`); } multiselect(event) { var id = $(event).attr("id"); var chatid = id.split("_")[1]; if ($(event).is(":checked")) { !Chat.MultiSelect.find(x => x == chatid) ? Chat.MultiSelect.push(chatid) : ""; } else { Chat.MultiSelect = Chat.MultiSelect.filter(x => x != chatid); } $(".selected-msgs-count").html(`${Chat.MultiSelect.length}`); if (Chat.MultiSelect.length != 0) { $('.footer-multiaction').removeClass('disabled'); } else { $('.footer-multiaction').addClass('disabled'); } var a = Chat.chatlistarray.filter(x => x.fileName != null).map(y => y.chatId); var common = $.grep(a, function (element) { return $.inArray(element, Chat.MultiSelect) !== -1; }); if (common.length != 0) { $('#copyicon').addClass('disabled'); $('.star-icon').addClass('disabled'); } else { if (Chat.MultiSelect.length != 0) { $('#copyicon').removeClass('disabled'); $('.star-icon').removeClass('disabled'); } } var b = Chat.chatlistarray.filter(x => x.isDelete).map(y => y.chatId); var common1 = $.grep(b, function (element) { return $.inArray(element, Chat.MultiSelect) !== -1; }); if (common1.length != 0) { $('.footer-multiaction').addClass('disabled'); $('.delete-icon').removeClass('disabled'); } } MultiDelete() { 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 messages = Chat.MultiSelect; var data = { messages }; instance._chatmanager.Deletemultiple(data).then(function (response) { if (response.status == Unibase.Data.Status.Success) { for (let i = 0; i < Chat.MultiSelect.length; i++) { $('.chat-messages_' + Chat.MultiSelect[i]).remove(); } Chat.MultiSelect = []; } }); } } }); } multiplestar() { var Messages = Chat.MultiSelect; var data = { Messages }; this._chatmanager.Starmultiple(data).then(function (response) { if (response.status == Unibase.Data.Status.Success) { for (let i = 0; i < Chat.MultiSelect.length; i++) { var result = response.result.find(x => x.chatId = Chat.MultiSelect[i]); Chat.chatlistarray[Chat.chatlistarray.findIndex(x => x.chatId == result.chatId)] = result; Chat.Instance().starMessageTemplate(result.chatId); } Chat.MultiSelect = []; } }); } multiplecopy() { var messages = ""; var msgarray = Chat.MultiSelect; for (var i = 0; i < msgarray.length; i++) { var msg = Chat.chatlistarray.find(x => x.chatId == msgarray[i]).message; messages += msg + '\n'; } var textArea = document.createElement("textarea"); textArea.value = messages; document.body.appendChild(textArea); textArea.select(); document.execCommand("Copy"); textArea.remove(); Chat.MultiSelect = []; } BlockAlert() { var contactinfo = Chat.Instance().getContactInfo(Chat.contactId, 0); var text = Chat.isBlock ? "Unblock " + contactinfo.contactName + " to send message." : "Block " + contactinfo.contactName + " ?"; Chat.Instance().chatPopup({ message: text, buttons: { confirm: { label: Chat.isBlock ? "Unblock" : "Block" }, cancel: { label: 'Cancel' } }, callback: (result) => { if (result) { Unibase.Platform.Connect.Managers.ChatManager.Instance().blockOrunBlock(Chat.chatGroupId).then(function (response) { if (response.result != null) { Chat.isBlock = response.result.isBlock; Chat.recentChats.find(x => x.contactId == Chat.contactId).isBlock = Chat.isBlock; var blocktext = "Unblock"; var successText = "User Blocked"; if (!Chat.isBlock) { blocktext = "Block"; successText = "User Unblocked"; var reflastseen = Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId).lastSeen; var lastseen = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocal(reflastseen); if (lastseen != "Invalid date") { $('.lastseen' + Chat.contactId).text(lastseen); $('.lastseen_' + Chat.contactId).attr('data-lastseen', reflastseen); } } else { $('.lastseen_' + Chat.contactId).text(''); } MessageHelper.Instance().showSuccess(successText, ''); $('.blkbtn-text').text(blocktext + "User"); } else { alert("Failed to update"); } }); } } }); } profileheader() { var profileheaderhtml = Chat.Instance()._chatTemplate.getprofileheader(); $('#profileHeader').html(profileheaderhtml); } privatewindow(id) { return __awaiter(this, void 0, void 0, function* () { var contactElement = $(`#msgConvoItem_${id}`); Chat.contactId = +$(contactElement).attr("data-contactid"); Chat.chatGroupId = +$(contactElement).attr("data-chatgroupid"); var contactInfo = Chat.Instance().getContactInfo(Chat.contactId, Chat.chatGroupId); Chat.chatGroupId = contactInfo.chatGroupId; Chat.contactId = contactInfo.contactId; Chat.isPrivate = contactInfo.isPrivate; Chat.isBlock = contactInfo.isBlock; var unreadcount = Number(contactInfo.unReadMessagesCount); if (unreadcount > 0) { Chat.recentChats.find(x => x.chatGroupId == Chat.chatGroupId).unReadMessagesCount = 0; } var badgecount = Number($('#chatIconBadge').text()) - unreadcount; $('#chatIconBadge').text(badgecount); $('.unread_messages_' + Chat.chatGroupId).remove(); if (badgecount <= 0) { $('#chatIconBadge').addClass('d-none').text(0); } const headerhtml = Chat.instance._chatTemplate.getPrivateWindowTemplate(contactInfo); $('#chatMsgHeader').html(headerhtml); if (Chat.chatGroupId != 0) { Chat.Instance().loadTyping(Chat.chatGroupId); } var muteText = contactInfo.isMute ? "Unmute" : "Mute"; $('.mute-option').text(muteText); $('.messageslist').html(''); Unibase.Platform.Connect.Components.Chat.chatlistarray = []; Chat.chatwindow = false; Chat.privatewindow = true; Chat.profiledetailswindow = false; $('.lastseen_' + Chat.contactId).text(''); $('.morediv').attr("data-isfirst", 'true'); $('.morediv').attr("data-moreindex", '0'); $('.more_msg').addClass('d-none'); $('#chatEmojiIcon').removeClass('d-none'); if (!Chat.isFullScreen) { $('#chatConvoBody').removeClass('hidden'); $('#chatsContactsSection').addClass('hidden'); $('.chat_down').css('left', '88%'); } else { this.highlightActiveChat(); $('#chatMsgHeader,.msg-input-wrap').removeClass('hidden'); $('.msg-input-wrap').addClass('d-flex'); $('#selectedMsgsCountHeader,.msg-multiaction-btns').addClass('hidden'); $('#chatTypingMsg').html(''); $('#closePrivateWindowBtn').addClass('hidden'); $('#fullScreenModal').modal('hide'); $('#chatNoConvoMsgWrap').addClass('hidden'); $('#chatConvoBody').removeClass('hidden'); $('.chat_down').css('left', '98%'); } Chat.routes.push('private-window'); if (isMobileApp()) { $('#chatEmojiIcon').addClass('d-none'); } yield Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatsByGroupId(Chat.chatGroupId).then(function (response) { if (response.result != null && response.result.length > 0) { Unibase.Platform.Connect.Components.Chat.chatlistarray = response.result; if (contactInfo.draftMessage != "" && contactInfo.draftMessage != null && contactInfo.draftMessage != "null") { var draftmessage = JSON.parse(contactInfo.draftMessage); if (draftmessage.quote != undefined) { Chat.Instance().quoteMessage(draftmessage.quote); } $('#input_msg_send_chatapp').val(draftmessage.message); $('#icon_send').removeClass('hidden'); $('#recordaudio').addClass('hidden'); } Chat.Instance().LoadMessages(); } }); if (!contactInfo.isPrivate) { if (Chat.isBlock) { $('#chatFooter').addClass('hidden'); $('.remove_template').removeClass('hidden'); return; } else { Unibase.Platform.Connect.Managers.ChatManager.Instance().getChatRecipientsByGroupId(Chat.chatGroupId).then(function (response) { if (response.result != null && response.result.length > 0) { Chat.grpdetails = response.result.filter(x => x.isBlock == false); $('.lastseen_' + Chat.contactId).text(Chat.grpdetails.length + ' ' + 'Participants'); } }); } } else { if (!Chat.isBlock) { Chat.Instance().updatestatus(); if (contactInfo.lastSeen != null && contactInfo.lastSeen != "null" && contactInfo.lastSeen != "" && contactInfo.lastSeen != undefined) { var date = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocal(contactInfo.lastSeen); var onlineIndex = Chat.connectedusers.findIndex(x => x == Chat.contactId); if (onlineIndex == -1) $('.lastseen_' + Chat.contactId).text(date); setInterval(Chat.Instance().refreshlastseen, 60000); } } } $('.remove_template').addClass('hidden'); $('#chatFooter').removeClass('hidden'); let _packet = new Unibase.Platform.Connect.Server.Packets.Connect(); _packet.UserId = Chat.currentUser.userId; _packet.UserName = Chat.currentUser.name; _packet.ActiveChatGroupId = Chat.chatGroupId; _packet.SessionId = Chat.currentUser.sessionId; _packet.UnibaseId = Chat.currentUser.unibaseId; Unibase.Platform.Connect.Components.Chat.instance._chatter.updateActiveChatGroup(_packet, null); $('.chat_down').addClass('hidden'); $('#input_msg_send_chatapp').focus(); $('.simplebar-content-wrapper').scroll(function () { Chat.Instance().showchatdownicon(); }); }); } LoadMessages() { if (Chat.chatlistarray.length > 0) { var index = Number($('.morediv').attr("data-moreindex")); var isFirst = ($('.morediv').attr('data-isfirst') === 'true'); if (index == 0 && isFirst) { Chat.chatlistarray.sort((a, b) => a.messageSentDate > b.messageSentDate ? 1 : -1); index = Chat.chatlistarray.length - 1; $('.morediv').attr("data-isfirst", 'false'); } var refindex = index - 20; $('.morediv').attr("data-moreindex", refindex); if (Chat.chatlistarray.length <= 20) { $('.more_msg').addClass('d-none'); } else { $('.more_msg').removeClass('d-none'); } var dateArray = []; for (let j = 0; j < 20; j++) { var html = ''; if (index < 0) { $('.more_msg').addClass('d-none'); $('.morediv').attr("data-isfirst", 'true'); $('.morediv').attr("data-moreindex", '0'); break; } var messageDate = moment.utc(Chat.chatlistarray[index].messageSentDate).format('MM-DD-YYYY'); var dateindex = dateArray.findIndex(x => x == messageDate); if (dateindex == -1) { dateArray.push(messageDate); } html = Chat.Instance().loadconversation(Chat.chatlistarray[index]); index--; $('.messageslist').prepend(html); } for (let i = 0; i < dateArray.length; i++) { var getdatehtml = Chat.Instance().getMessageDate(dateArray[i]); if ($('#date_' + dateArray[i]).length != 0) { $('#date_' + dateArray[i]).remove(); } $('.dateli_' + dateArray[i] + ':eq(0)').before(getdatehtml); } let lastelement = $('.date').first(); if (isFirst) { lastelement = $('.chat-message-wrap').last(); } if (lastelement[0] != undefined) lastelement[0].scrollIntoView(); } } getMessageDate(messageDate) { var _datehelper = Unibase.Platform.Helpers.DateTimeHelper.Instance(); var date = new Date(); var d = messageDate.replace(/-/g, '/'); var messageDateformat = _datehelper.formatLocalDateFirst(d); var today = _datehelper.formatLocalDateFirst(date); var yesterDay = _datehelper.formatLocalDateFirst(date.setDate(date.getDate() - 1)); var senddate = (messageDateformat == today) ? senddate = "Today" : (messageDateformat == yesterDay) ? senddate = "Yesterday" : senddate = messageDateformat; return '
    ' + senddate + '
    '; } loadconversation(chatList, isNewMessage = false) { var hideinfo = ''; const instance = this; var msghtml = ""; let _userid = Chat.currentUser.userId; var msg; var messagealert; var lihtml; var showmsgstatus = ""; var messageDate = moment.utc(chatList.messageSentDate).format('MM-DD-YYYY'); var messageLength = isNewMessage ? $('.chat-message-wrap').length - 1 : 0; var preElement = $('.chat-message-wrap:eq(' + messageLength + ')'); var previousDivDate = preElement.attr('data-MessageDate'); var previousDivTime = preElement.attr('data-MessageTime'); var localDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDate(chatList.messageSentDate); var msgTime = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithT(chatList.messageSentDate); msgTime = msgTime.replace(localDate, ""); var prevFromUserName = preElement.attr('data-fromusername'); var showfromuser = ""; if (chatList.fromUserName == prevFromUserName && !Chat.isPrivate) { if (!isNewMessage) { preElement.find(".fromUserIdname").addClass('hidden'); } else { showfromuser = "hidden"; } } let isMsgTimeMatch = (msgTime == previousDivTime && previousDivDate == messageDate && prevFromUserName == chatList.fromUserName); if (isMsgTimeMatch && isNewMessage) { preElement.find('.time').addClass('hidden'); isMsgTimeMatch = false; } const chatId = chatList.chatId; msg = chatList.message; if (msg.startsWith('*') && msg.endsWith('*')) { msg = msg.replaceAll('*', ''); msg = '' + msg + ''; } else if (msg.startsWith('_') && msg.endsWith('_')) { msg = msg.replaceAll('_', ''); msg = '' + msg + ''; } else if (msg.startsWith('~') && msg.endsWith('~')) { msg = msg.replaceAll('~', ''); msg = '' + msg + ''; } if (msg.includes('') || msg.includes('\n')) { msg = msg.replace(/ /g, ' ').replaceAll(/\n/g, '
    '); } if ($.trim(msg).length > 400) { var fullmsg = msg; msg = fullmsg.substring(0, 400); var remainmsg = fullmsg.substring(400, $.trim(fullmsg).length); msg = msg + '....Read more'; } if (chatList.groupMessageType != 0) { msghtml += Unibase.Platform.Connect.Components.Chat.Instance().groupdefaultmessages(chatList); return msghtml; } if (chatList.isDelete) { showmsgstatus = "hidden"; if (_userid == chatList.fromUserId) { messagealert = "You deleted this message"; } else { messagealert = "This message was deleted"; } msg = '' + messagealert + ''; fileimagepath = msg; } if (chatList.messageType == Unibase.Platform.Connect.Enums.MessageType.Url && !chatList.isDelete) { msg = '' + msg + ''; } if (chatList.quotedMessage != null) { msg = Unibase.Platform.Connect.Components.Chat.Instance().quotetemplate(chatList); } if (chatList.isEdit && !chatList.isDelete) { msg = `${msg}`; } var forward = '
  • Forward
  • '; var quote = '
  • Quote
  • '; var edit = '
  • Edit
  • '; var copy = '
  • Copy
  • '; var deletemsg = '
  • Delete
  • '; var starmessage = '
  • Star message
  • '; var RemoveStarmessage = '
  • Unstar message
  • '; var deleteforeveryone = '
  • Delete for everyone
  • '; var fromUserIdhtml = ""; var starmsg = starmessage; let isStarMsg = false; if (!chatList.isDelete) { if (chatList.isStared == null) { chatList.isStared = ""; } if (chatList.isStared.includes(_userid)) { isStarMsg = true; starmsg = RemoveStarmessage; msg = `${msg}`; } } if (Chat.isPrivate) { showfromuser = "hidden"; } if (chatList.fromUserName != Chat.currentUser.name) { fromUserIdhtml = '' + chatList.fromUserName + '
    ' + msg + '
    '; if (chatList.filePath != null) { fromUserIdhtml = '' + chatList.fromUserName + '
    '; } } const showMsgTime = isMsgTimeMatch ? 'hidden' : ''; var liclassList = (chatList.fromUserId == Chat.currentUser.userId) ? "fromuserlist" : "touserist"; if (chatList.filePath != null) { var audiovoice = ''; const fileNameWithType = chatList.fileName; const fileName = fileNameWithType.split('.').slice(0, -1).join('.'); const fileType = chatList.fileType.split('/').pop(); var fileimagepath; var imagepath = []; let imgClass = ''; var filepath = Chat.Instance().GetFilePath(chatList.filePath); msg = (msg == "null") ? "" : '
    ' + msg + '
    '; let audioplayBtnHtml = ''; imagepath[0] = "" + filepath + ""; var download = "Unibase.Platform.Connect.Components.Chat.Instance().downloadfile(\'" + imagepath[0] + "'\,'" + chatId + "')"; var preview = "Unibase.Platform.Connect.Components.Chat.Instance().filePreview(\'" + imagepath[0] + "'\)"; if (chatList.fileType.match('image.*')) { fileimagepath = Chat.Instance().getFilePath(filepath); imagepath[1] = "" + fileimagepath + ""; } else { if (chatList.fileType.match('audio.*')) { imgClass = 'audio-thumb-img'; audioplayBtnHtml = ``; } if (chatList.fileType.includes('audio') || chatList.fileType.includes('video')) { fileimagepath = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(chatList.fileType); } else { fileimagepath = Unibase.Platform.Connect.Components.Chat.Instance().getfileThumbnail(chatList.fileName.substring(chatList.fileName.lastIndexOf('.') + 1)); } } msghtml += '
  • '; if (_userid == chatList.fromUserId) { if (chatList.messageDeliveredDate != null) { if (chatList.messageReadDate != null) { k = ''; } else { k = ''; } if (chatList.fileName.indexOf('voicemsg') != -1) { msghtml += '
    ' + audiovoice + ''; } else { msghtml += '
    ' + audioplayBtnHtml + '
    ' + fileName + '.' + fileType + '
    '; } msghtml += `
    ${msg}${k}
    `; hideinfo = ''; } else { if (chatList.fileName.indexOf('voicemsg') != -1) { msghtml += '
    ' + audiovoice + '
    '; } else { msghtml += '
    ' + audioplayBtnHtml + '
    ' + fileName + '.' + fileType + '
    ' + msg + '
    '; } Chat.isPrivate ? hideinfo = 'hidden' : hideinfo = ''; } var info = '
  • Info
  • '; lihtml = chatList.isDelete ? deletemsg : (forward + quote + deletemsg + deleteforeveryone + info); msghtml += `
    ${msgTime}
    `; } else if (chatList.toUserId != 0 || !Chat.isPrivate) { if (chatList.fileName.indexOf('voicemsg') != -1) { msghtml += '
    ' + fromUserIdhtml + audiovoice + '
    '; } else { msghtml += '
    ' + audioplayBtnHtml + '' + fromUserIdhtml + '
    ' + fileName + '.' + fileType + '
    ' + msg + '
    '; } lihtml = chatList.isDelete ? deletemsg : (forward + deletemsg); msghtml += `
    ${msgTime}
    `; } } else { let emojiFontSize = instance.getEmojiFontSize(msg); msghtml += `
  • `; 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 = `
  • ${ddate}
  • `; $('.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 = `
  • ${rdate}
  • `; $('.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}
    ${contactName}
  • `; } } $('.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}
    ${contactName}
  • `; } $('.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(`
    ${messagedate}
    `); } 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(`
    ${messagedate}
    `); } 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 ``; }).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 = {}));