let lastIdReceiver = null; // o usaAppend foi add para quando a msg precisa ser tratada como prepend mas inserida como append // o hiddenMenuMsg foi criado para ocultar o menu de reações e ações das msg na modal de pesquisa de mensagem. function messageReceiver(messageData, childType = "append", returnTemplate = false, container = '.body-message', usaAppend = false, hiddenMenuMsg = false) { let div = ""; let existsReaction = false; // if ($(`#message-${messageData.messageId}`).length > 0) return; if (messageData.internalComment == 1 && SESSION_DATA.id_tipo_colaborador >= USUARIO_CLIENTE) return; // INICIO DA DIV DA MENSAGEM // if (!returnTemplate) { div += `
`; } if ((messageData.printPicture && childType === 'prepend' && ((lastIdReceiver != 0 && messageData.sender.id != 0) && (lastIdReceiver == messageData.sender.id)))) { let lastUserPick = $(`${container} .message-data .user-pick`).eq(0); let containerPick = $(lastUserPick).parent().parent(); $(containerPick).find('.user-pick').remove(); $(containerPick).find('.div-user-pick').remove(); $(containerPick).find('.user-name-recipient').remove(); } // FOTO E NOME DO USUÁRIO // // prepend é para montar as msg antigas // append é para msg novas recebidas if ((messageData.printPicture && childType === 'prepend') || (!$(`${container} .message-data:last`).hasClass('message-recipient-content') && childType === 'append' && !returnTemplate) || ($(`#message-${messageData.messageId} .user-pick`).length && childType === 'append') || (childType === 'append' && $(`${container} .message-data:last`).length && $(`${container} .message-data:last`).data('user_id') != messageData.sender.id && !returnTemplate) ) { // Só adiciona a foto de perfil se o chat for de usuários if (messageData.chatType !== 'user') { const srcFotoUser = (messageData.chatType == 'service' && messageData.sender.id != -1) ? DEFAULT_PICTURE : (messageData.sender.picture ? messageData.sender.picture : DEFAULT_PICTURE); div += `
`; } div += `
`; // Só adiciona o nome se o chat for de usuários if (messageData.chatType !== 'user') { div += `
${messageData.sender.name}
`; } lastIdReceiver = messageData.sender.id; } else if (messageData.chatType !== 'user') { div += `
`; } let idMsg = 0; if (messageData.dataReply) idMsg = messageData.dataReply.messageId; // CONTEÚDO DA MENSAGEM div += `
`; if (messageData.shareId !== null && messageData.shareId !== undefined) div += `
Encaminhada
`; if (idMsg > 0 && !messageData.user_exclusao > 0) { let funcOpenMessage = ''; const senderReplyId = messageData.dataReply.id_remetente; const senderReplyName = messageData.dataReply.name_remetente; const ReceiverReplyId = messageData.dataReply.id_destinatario; const depReplyId = messageData.dataReply.id_departamento; if (messageData.dataReply.id_departamento > 0) { funcOpenMessage = `openMessage(${idMsg}, ${senderReplyId}, null, ${depReplyId})`; } else { funcOpenMessage = `openMessage(${idMsg}, ${senderReplyId}, ${ReceiverReplyId}, null)`; } div += `
${senderReplyName}
`; const filesListReply = messageData.dataReply.caminho_arquivo.replace("{", "").replace("}", "").split(","); const namesFilesReply = messageData.dataReply.nome_arquivo ? messageData.dataReply.nome_arquivo.split(",") : ''; if (filesListReply[0] != "") { filesListReply.forEach((file, key) => { const fileUrlReply = `${FILE_URL}/${file}`.replaceAll(" ", ""); const fileExtensionReply = getFileExtension(fileUrlReply); if (['png', 'jpg', 'gif', 'jpeg', 'webp'].includes(fileExtensionReply)) { div += `
${messageData.dataReply.message ? messageData.dataReply.message : 'Foto'}
`; } else if (['mp3', 'webm'].includes(fileExtensionReply)) { let type = fileExtensionReply === 'mp3' ? 'audio/mpeg' : 'audio/webm'; // div += // `
// //
// //
00:00 / 00:00
// //
// //
`; div += `
`; } else if (['mp4'].includes(fileExtensionReply)) { div += ``; } else { div += ` `; } }); } else { div += `${messageData.dataReply.message}`; } div += `
`; } if (!messageData.user_exclusao > 0) { const filesList = messageData.files.replace("{", "").replace("}", "").split(","); const thumbsList = messageData.thumb ? messageData.thumb.replace("{", "").replace("}", "").split(",") : Array(filesList.length).fill(0); const namesFiles = messageData.nome_arquivo ? messageData.nome_arquivo.split(",") : ''; if (filesList[0] != "") { filesList.forEach((file, key) => { const fileUrl = `${FILE_URL}/${file}`.replaceAll(" ", ""); const fileExtension = getFileExtension(fileUrl); if (['png', 'jpg', 'gif', 'jpeg', 'webp'].includes(fileExtension)) { const thumbUrl = thumbsList[key] ? (`${FILE_URL}/${thumbsList[key]}`).replaceAll(" ", "") : null; const image_compressed = thumbUrl ? thumbUrl : fileUrl; var styleGifContainer = (fileExtension === 'gif') ? 'style="position: relative; display: inline-block;"' : ''; div += ``; if (fileExtension === 'gif') { div += `
gif
`; div += ` `; } else { div += ` `; } div += `
`; } else if (['mp3', 'webm'].includes(fileExtension)) { let type = fileExtension === 'mp3' ? 'audio/mpeg' : 'audio/webm'; // div += // `
// //
// //
00:00 / 00:00
// //
// //
`; div += `
`; } else if (['mp4'].includes(fileExtension)) { div += ``; div += ` `; div += ``; } else { const nameFile = namesFiles[key].replace(`.${fileExtension}`, ''); div += ` `; } }); } div += `${identificaLink(messageData.message)}`; } else { div += ` Mensagem apagada`; } div += ``; // MENSAGEM EDITADA if (messageData.data_edicao) { div += `editado`; } div += `${messageData.hour}`; if (!messageData.user_exclusao > 0) { if (messageData.favorite && messageData.favorite.includes(SESSION_DATA.id)) { div += `
`; } let objResponse = { messageId: messageData.messageId, senderId: messageData.sender.id, senderName: messageData.sender.name, receiverId: messageData.receiver.id, receiverName: messageData.receiver.name, classIndex: 'message-recipient-message', departamentId: null, tipo: 'Receiver' } if (!hiddenMenuMsg) { // AÇÕES DA MENSAGEM if (messageData.chatType != 'service') { div += `
` div += replyTemplate(messageData, objResponse); div += `
`; } // MENU DE REAÇÕES if (messageData.chatType != 'service') { div += `
` div += reactionsTemplate(messageData, objResponse); div += `
`; } } // --------------- RESULTADO REAÇÕES --------------------- // div += `
`; if (messageData.reactions && typeof messageData.reactions === 'object') { Object.entries(messageData.reactions).forEach(([emoji, data]) => { var emojiCharacter = emoji; var quantityReaction = data.amount; var names = data.name; existsReaction = true; div += `
${quantityReaction > 1 ? quantityReaction : ''}${emojiCharacter}
`; names.forEach(name => div += `${name}`); div += `
`; }); } div += `
`; // --------------- FIM RESULTADO REAÇÕES -------------- // } div += `
`; div += `
`; if (!returnTemplate) div += ``; if (existsReaction && !messageData.user_exclusao > 0) div += '

'; if (returnTemplate) return div; if (childType === 'prepend') { if (usaAppend) { $(`${container}`).append(div); } else { $(`${container}`).prepend(div); } } else { if ($(`${container} #container-reply`).length > 0) { $(div).insertBefore(`${container} #container-reply`); cautiousScroll(); } else { $(`${container}`).append(div); cautiousScroll(); } } // reloadAudioPlayers() registrarEventoEnded(); checarPosicaoChat(); }