tech4biz/admin/assets/js/chat.js
2024-10-25 17:11:31 +05:30

237 lines
8.8 KiB
JavaScript

$(function () {
moment().format();
const server = "http://localhost:5005";
// const server = "https://164.92.112.47:5005";
let current_user = '';
let current_user_id = 0
let socket = io(server, {
transports: ['websocket']
});
if (typeof io !== 'undefined') {
}
$(".list").empty();
$("#chat__page").empty();
$("#chat__page").html(`<div class="container d-flex align-items-center justify-content-center">
<h2>Click to Open Conversation</h2>
</div>`);
const format_format = "YYYY-MM-DD HH:mm:ss"
let today = new Date();
socket.on('connect', () => {
console.log('Socket Server Connected On Admin Side');
console.log(socket.id);
let data = {
socket: socket.id,
email: 'admin'
}
$(".list").empty();
socket.emit("user__connected", data);
socket.emit("fetch__users", data);
});
socket.on('fetch__users', function (data) {
console.log(data)
$(".list").empty();
data.map(function (user) {
let li = `<li class="clearfix openChatBox" data-email="${user.email}" style="cursor: pointer;">
<img class="rounded-circle user-image" src="https://ui-avatars.com/api/?background=random&name=${user.email}" alt="${user.email}" />
<div class="status-circle away"></div>
<div class="about">
<div class="name">${user.email}</div>
<div class="status" id="last_message">${decodeURIComponent(user.last_msg)}</div>
</div>
</li>`;
$(".list").append(li);
});
$('.openChatBox').click(function () {
let email = $(this).attr('data-email');
let data = {
socket: socket.id,
email: email
}
socket.emit("open__chatBox", data);
});
});
socket.on('open__chatBox', function (data) {
current_user = data.data.email;
current_user_id = data.user_id;
let chatContainer = `<div class="chat">
<!-- chat-header start-->
<div class="chat-header clearfix">
<img class="rounded-circle" src="./assets/images/user/8.jpg" alt="">
<div class="about">
<div class="name" id="currentUser">${data.data.email || null}</div>
</div>
</div>
<!-- chat-header end-->
<div class="chat-history chat-msg-box custom-scrollbar">
<ul id="messages__list__${current_user_id}" class="message__list__${current_user_id}">
</ul>
</div>
<!-- end chat-history-->
<div class="chat-message clearfix">
<div class="row">
<div class="col-xl-12 d-flex">
<div class="input-group text-box">
<textarea class="form-control input-txt-bx" style="overflow:hidden !important;" id="chat-input" type="text" name="message-to-send" placeholder="Type a message......"></textarea>
<button class="input-group-text btn btn-primary chat-submit" id="chat-submit" type="button" data-bs-original-title="" title="">
SEND
</button>
</div>
</div>
</div>
</div>
<!-- end chat-message-->
<!-- chat end-->
<!-- Chat right side ends-->
</div>`;
$("#chat__page").empty();
$("#chat__page").html(chatContainer);
$("#messages__list__" + current_user_id).empty()
let msgLi = '';
data.msg.map(function (msg) {
if (msg.send_by === 'admin') {
let shortTime = moment(msg.created_at).format('hh:mm: A');
msgLi += `<li class="clearfix">
<div class="message other-message pull-right">
<div class="message-data ">
<span class="message-data-time">${shortTime}</span></div>
${decodeURIComponent(msg.message)}
</div>
</li>`;
} else {
let shortTime = moment(msg.created_at).format('hh:mm: A');
msgLi += `<li>
<div class="message my-message">
<div class="message-data text-end"><span class="message-data-time">${shortTime}</span>
</div>
${decodeURIComponent(msg.message)}
</div>
</li>`;
}
$("#messages__list__" + current_user_id).html(msgLi);
});
$(".chat-history").stop().animate({ scrollTop: $(".chat-history")[0].scrollHeight }, 1000);
// $('#chat-input').keydown(function (e) {
// if (e.keyCode === 13 && e.ctrlKey) {
// $(this).val(function(i,val){
// //console.log( val + "\n");
// return val + "\n";
// });
// }
// }).keypress(function(e){
// if (e.keyCode === 13 && !e.ctrlKey) {
//
// return false;
// }
// });
$("#chat-submit").click(function (e) {
let msg = $("#chat-input").val();
if (msg) {
e.preventDefault();
if (msg.trim() === '') {
return false;
}
let data = {
"socket": socket.id,
"from": 'admin',
"to": current_user,
"msg": encodeURIComponent(msg),
"send_by": 'admin'
}
const send__message__toAdmin = (data) => {
socket.emit("send__message__toAdmin", data);
}
send__message__toAdmin(data);
}
$("#chat-input").val('');
});
});
socket.on('receive__user__message', (data) => {
console.log('receive__user__message');
console.log(data)
let msgLi = ``;
msgLi += `<li>
<div class="message my-message">
<div class="message-data text-end">
<span class="message-data-time">${moment().format('hh:mm: A')}</span></div>
${decodeURIComponent(data.msg)}
</div>
</li>`;
$("#messages__list__" + data.user_id).append(msgLi);
if (("#messages__list").length > 0) {
$(".chat-history").stop().animate({ scrollTop: $(".chat-history")[0].scrollHeight }, 1000);
}
});
socket.on('send__message__toAdmin', (data) => {
console.log(data);
let msgLi = ``;
msgLi += `<li class="clearfix">
<div class="message other-message pull-right">
<div class="message-data text-end">
<span class="message-data-time">${moment().format('hh:mm: A')}</span></div>
${decodeURIComponent(data)}
</div>
</li>`;
//$("#messages__list").append(msgLi);
$("#messages__list__" + current_user_id).append(msgLi);
$(".chat-history").stop().animate({ scrollTop: $(".chat-history")[0].scrollHeight }, 1000);
});
socket.on('refreshUsers', (data) => {
console.log(data);
let li = `<li class="clearfix openChatBox" data-email="${data.email}" style="cursor: pointer;">
<img class="rounded-circle user-image" src="./assets/images/user/1.jpg" alt="">
<div class="status-circle away"></div>
<div class="about">
<div class="name">${data.email}</div>
<div class="status">${data.email}</div>
</div>
</li>`;
//$(".list").append(li);
});
});