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 ? `` : ""} ` @@ -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( + ` +