From bdc5b0c442c9bcb583856ec4ff342763d17811e4 Mon Sep 17 00:00:00 2001
From: amazuecos
Date: Thu, 26 Sep 2024 13:11:01 +0000
Subject: [PATCH] feat:chat
---
httpdocs/assets/js/safekat/components/chat.js | 83 ++++++++++++-------
.../js/safekat/pages/chatNotification.js | 5 +-
2 files changed, 59 insertions(+), 29 deletions(-)
diff --git a/httpdocs/assets/js/safekat/components/chat.js b/httpdocs/assets/js/safekat/components/chat.js
index 78620ff5..985cd374 100644
--- a/httpdocs/assets/js/safekat/components/chat.js
+++ b/httpdocs/assets/js/safekat/components/chat.js
@@ -70,23 +70,28 @@ class Chat {
this._handleGetChatList()
this.sendBtnMessageDepartment.on("click", this._sendMessage.bind(this))
+
}
initPresupuesto() {
this.chatType = "presupuesto"
this._handleGetChatList()
this.sendBtnMessageDepartment.on("click", this._sendMessage.bind(this))
+ this.messageInput.on("keypress", this._sendMessagePressKey.bind(this))
+
}
initPedido() {
this.chatType = "pedido"
this._handleGetChatList()
this.sendBtnMessageDepartment.on("click", this._sendMessage.bind(this))
+ this.messageInput.on("keypress", this._sendMessagePressKey.bind(this))
}
initFactura() {
this.chatType = "factura"
this._handleGetChatList()
this.sendBtnMessageDepartment.on("click", this._sendMessage.bind(this))
+ this.messageInput.on("keypress", this._sendMessagePressKey.bind(this))
}
initContacts() {
@@ -136,6 +141,7 @@ class Chat {
_handleGetChatListSuccess(data) {
Object.values(data).map(row => {
this.chatList.append(this._getContact(row))
+
this.chatList.find(`#chat_${row.name}`).on("click", (event) => {
$(".chat-contact-list-item").removeClass("active")
$(event.currentTarget).parent().addClass("active")
@@ -207,6 +213,8 @@ class Chat {
${row.display}
+ ${row.unreadMessages ? `${row.unreadMessages}` : ""}
`
@@ -267,7 +275,15 @@ class Chat {
this.chatHistory.append(chatItem)
return chatItem
}
+ _sendMessagePressKey(e){
+ if ( e.which == 13 ) {
+ e.preventDefault();
+ this._sendMessage()
+ }
+
+ }
_sendMessage() {
+
let messageText = this.messageInput.val()
const body = {
message: messageText,
@@ -297,6 +313,7 @@ class Chat {
_handleListContacts() {
this.sideBar.find("#contact-list").removeClass("d-none")
this.sendBtnMessageInternal.on("click", this._sendMessageInternal.bind(this))
+ this.sendBtnMessageInternal.on("keypress", this._sendMessageInternalPressKey.bind(this))
let ajax = new Ajax(
"/chat/contacts",
null,
@@ -318,15 +335,16 @@ class Chat {
this.sideBar.find("#contact-list").addClass("d-none")
}
this.sideBar.find(".contact-chat").on("click", (e) => {
+ $(e.currentTarget).find(".messages-unread-contact").empty()
$(".contact-chat").parent().removeClass("active")
$(".chat-contact-list-item").removeClass("active")
+ this.chatHistory.empty()
this.domItem.find("#chat-header-dropdown-users").addClass("d-none")
let userId = $(e.currentTarget).data("id")
$(e.currentTarget).parent().addClass('active')
this.receiverId = userId
this._handleGetSingleContact(userId)
this._setBtnInternal()
- this.chatHistory.empty()
})
}
_handleListContactsError(err) {
@@ -366,6 +384,12 @@ class Chat {
_handleGetSingleContactError(err) {
+ }
+ _sendMessageInternalPressKey(e){
+ if ( e.which == 13 ) {
+ e.preventDefault();
+ this._sendMessageInternal()
+ }
}
_sendMessageInternal() {
let messageText = this.messageInput.val()
@@ -387,6 +411,7 @@ class Chat {
}
_sendMessageInternalSuccess(message) {
this.messageInput.val("")
+ this.chatHistory.empty()
this._handleGetSingleContact(this.receiverId)
}
_sendMessageInternalError(err) {
@@ -413,7 +438,7 @@ class Chat {
${contact.unreadMessages ? `${contact.unreadMessages}` : ""}
+ class="badge badge-center rounded-pill bg-primary messages-unread-contact">${contact.unreadMessages}` : ""}
`
@@ -437,15 +462,30 @@ export const showNotificationMessages = (dom) => {
null,
null,
(data) => {
- let totalMessages = 0
+ dom.empty()
+ $("#chat-notification-number").text(data.totalMessages ?? 0)
+ data?.internals?.map((e) => {
+ let numberOfMessages = e.unreadMessages
+ if(numberOfMessages > 0){
+ dom.append(
+ `
+
+
+
+ ${e.avatar}
+
+
+
[${e.title}] ${e.chatDisplay}
+
+ ${numberOfMessages}
+
+
+ `
+ )
+ }
+ })
data?.chatPresupuestos?.map((e) => {
- console.log(e)
- let numberOfMessages = 0
- e.messages.forEach(m => {
-
- m.viewed == "1" ? numberOfMessages++ : null
- });
- totalMessages+= numberOfMessages
+ let numberOfMessages = e.unreadMessages
if(numberOfMessages > 0){
dom.append(
`
@@ -465,18 +505,12 @@ export const showNotificationMessages = (dom) => {
}
})
data?.chatFacturas?.map((e) => {
- console.log(e)
- let numberOfMessages = 0
- e.messages.forEach(m => {
-
- m.viewed == "1" ? numberOfMessages++ : null
- });
- totalMessages+= numberOfMessages
+ let numberOfMessages = e.unreadMessages
if(numberOfMessages > 0){
dom.append(
`
-
+
${e.facturaId}
@@ -491,19 +525,12 @@ export const showNotificationMessages = (dom) => {
}
})
data?.chatPedidos?.map((e) => {
- console.log(e)
- let numberOfMessages = 0
- e.messages.forEach(m => {
-
- m.viewed == "1" ? numberOfMessages++ : null
- });
- $("#chat-notification-number").text(numberOfMessages)
- totalMessages+= numberOfMessages
+ let numberOfMessages = e.unreadMessages
if(numberOfMessages > 0){
dom.append(
`
-
+
${e.pedidoId}
@@ -517,7 +544,7 @@ export const showNotificationMessages = (dom) => {
)
}
})
- $("#chat-notification-number").text(totalMessages)
+
},
(err) => { }
)
diff --git a/httpdocs/assets/js/safekat/pages/chatNotification.js b/httpdocs/assets/js/safekat/pages/chatNotification.js
index cc3a169b..f13d8591 100644
--- a/httpdocs/assets/js/safekat/pages/chatNotification.js
+++ b/httpdocs/assets/js/safekat/pages/chatNotification.js
@@ -1,3 +1,6 @@
import {showNotificationMessages} from "../components/chat.js";
-showNotificationMessages($("#chat-notification-list"))
\ No newline at end of file
+showNotificationMessages($("#chat-notification-list"))
+$("#message-notification-dropdown").on("click",(e) => {
+ showNotificationMessages($("#chat-notification-list"))
+})
\ No newline at end of file