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