alterações de melhorias
This commit is contained in:
+44
-4
@@ -1101,7 +1101,7 @@ async function carregarConversas() {
|
||||
});
|
||||
}
|
||||
renderConversas(data.data, busca);
|
||||
} catch(e) {}
|
||||
} catch(e) { if (Chatc2Toast) Chatc2Toast.error('Erro ao carregar conversas'); }
|
||||
}
|
||||
|
||||
var AVATAR_COLORS = ['#667eea','#764ba2','#f093fb','#4facfe','#43e97b','#fa709a','#fee140','#30cfd0','#a18cd1','#fda085'];
|
||||
@@ -1151,6 +1151,23 @@ function renderConversas(convs, busca) {
|
||||
return '<span class="conv-badge" style="background:' + esc(l.cor || '#667eea') + '">' + esc(l.nome || '') + '</span>';
|
||||
}).join('');
|
||||
const ultimaMsg = (c.ultimaMsg || '').substring(0, 60);
|
||||
// Preview com ícone por tipo de mensagem
|
||||
var previewHtml;
|
||||
if (!c.ultimaMsg) {
|
||||
previewHtml = '<em>Sem mensagens</em>';
|
||||
} else if (c.ultimaTipo === 'audio' || c.ultimaTipo === 'ptt') {
|
||||
previewHtml = '🎤 Mensagem de voz';
|
||||
} else if (c.ultimaTipo === 'image') {
|
||||
previewHtml = '🖼️ Imagem';
|
||||
} else if (c.ultimaTipo === 'video') {
|
||||
previewHtml = '🎥 Vídeo';
|
||||
} else if (c.ultimaTipo === 'document') {
|
||||
previewHtml = '📎 Documento';
|
||||
} else if (c.ultimaTipo === 'triagem') {
|
||||
previewHtml = '🤖 Menu de triagem';
|
||||
} else {
|
||||
previewHtml = esc(ultimaMsg);
|
||||
}
|
||||
const tempo = formatTime(c.dtUltimaMsg);
|
||||
return '<div class="conv-item ' + isActive + '" onclick="abrirConversa(' + c.id + ')" data-id="' + c.id + '">' +
|
||||
'<div class="conv-avatar" style="background:' + cor + '">' + iniciais + '</div>' +
|
||||
@@ -1159,7 +1176,7 @@ function renderConversas(convs, busca) {
|
||||
'<div class="conv-nome">' + esc(nome) + '</div>' +
|
||||
'<div style="font-size:10px;color:rgba(255,255,255,0.35);flex-shrink:0">' + tempo + '</div>' +
|
||||
'</div>' +
|
||||
'<div class="conv-ultima">' + (ultimaMsg ? esc(ultimaMsg) : '<em>Sem mensagens</em>') + '</div>' +
|
||||
'<div class="conv-ultima">' + previewHtml + '</div>' +
|
||||
'<div class="conv-status">' + statusDot + ' ' + (c.status === 'E' ? 'Em espera' : c.status === 'A' ? 'Aberto' : 'Finalizado') + '</div>' +
|
||||
(labelsHtml ? '<div class="conv-badges">' + labelsHtml + '</div>' : '') +
|
||||
'</div>' +
|
||||
@@ -1491,8 +1508,20 @@ async function carregarMensagens() {
|
||||
headers: { 'Authorization': 'Bearer ' + token }
|
||||
});
|
||||
var data = await res.json();
|
||||
if (data.success) renderMensagens(data.data);
|
||||
} catch(e) {}
|
||||
if (data.success) {
|
||||
// Notificação desktop: detecta novas mensagens de cliente
|
||||
var novasDoCliente = data.data.filter(function(m) {
|
||||
return m.remetente === 'C' && m.id > ultimaMsgIdGlobal && m.privada !== 'S';
|
||||
});
|
||||
if (novasDoCliente.length > 0 && Chatc2Notify) {
|
||||
var ultima = novasDoCliente[novasDoCliente.length - 1];
|
||||
Chatc2Notify.show('Nova mensagem', (ultima.mensagem || 'Mídia recebida').substring(0, 100));
|
||||
}
|
||||
// Atualiza ID máximo global
|
||||
data.data.forEach(function(m) { if (m.id > ultimaMsgIdGlobal) ultimaMsgIdGlobal = m.id; });
|
||||
renderMensagens(data.data);
|
||||
}
|
||||
} catch(e) { if (Chatc2Toast) Chatc2Toast.error('Erro ao carregar mensagens'); }
|
||||
carregandoMsgs = false;
|
||||
}
|
||||
|
||||
@@ -2110,11 +2139,20 @@ window.logout = function() {
|
||||
};
|
||||
|
||||
// Auto-refresh a cada 5 segundos
|
||||
let ultimaMsgIdGlobal = 0;
|
||||
setInterval(function() {
|
||||
carregarConversas();
|
||||
if (conversaAtiva) carregarMensagens();
|
||||
}, 5000);
|
||||
|
||||
// Notificação desktop: pede permissão na primeira interação
|
||||
document.addEventListener('click', function pedirPermissao() {
|
||||
document.removeEventListener('click', pedirPermissao);
|
||||
if (Chatc2Notify && Chatc2Notify.isSupported()) {
|
||||
Chatc2Notify.requestPermission();
|
||||
}
|
||||
}, { once: true });
|
||||
|
||||
// Presença: marca o atendente como "online" para o dashboard
|
||||
function pingPresenca() {
|
||||
fetch('/api/' + alias + '/dashboard/ping', {
|
||||
@@ -2133,6 +2171,8 @@ document.getElementById('msgInput').addEventListener('input', function() {
|
||||
})();
|
||||
</script>
|
||||
<script src="/js/dark-mode.js"></script>
|
||||
<script src="/js/notifications.js"></script>
|
||||
<script src="/js/toast.js"></script>
|
||||
<!-- impeccable-live-start -->
|
||||
<script src="http://localhost:8400/live.js"></script>
|
||||
<!-- impeccable-live-end -->
|
||||
|
||||
Reference in New Issue
Block a user