Show visitor online state in chat list

This commit is contained in:
rajchales-monito
2026-07-24 12:00:55 +02:00
parent ce99d7114f
commit df70913665
3 changed files with 43 additions and 1 deletions
+16
View File
@@ -304,6 +304,12 @@ function adminConversations(res) {
AND unread.sender_type = 'visitor'
AND datetime(unread.created_at) > datetime(COALESCE(c.admin_seen_at, '1970-01-01 00:00:00'))
) AS has_unread,
EXISTS(
SELECT 1 FROM visitor_sessions vs
WHERE vs.site_id = c.site_id
AND vs.visitor_token = c.visitor_token
AND datetime(vs.last_seen_at) >= datetime('now', '-90 seconds')
) AS visitor_online,
(SELECT COUNT(*) FROM conversations vc WHERE vc.site_id = c.site_id AND vc.visitor_token = c.visitor_token) AS visitor_conversation_count
FROM conversations c
JOIN sites s ON s.id = c.site_id
@@ -689,6 +695,10 @@ function formatConversationSummary(row) {
siteId: row.site_id,
siteKey: row.site_key,
status: row.status,
visitorToken: row.visitor_token,
visitorInitials: visitorInitials(row.visitor_token),
visitorLabel: visitorLabel(row.visitor_token),
visitorOnline: Boolean(row.visitor_online),
visitor: {
name: row.visitor_name,
email: row.visitor_email,
@@ -765,6 +775,12 @@ function findConversation(publicId) {
AND unread.sender_type = 'visitor'
AND datetime(unread.created_at) > datetime(COALESCE(c.admin_seen_at, '1970-01-01 00:00:00'))
) AS has_unread,
EXISTS(
SELECT 1 FROM visitor_sessions vs
WHERE vs.site_id = c.site_id
AND vs.visitor_token = c.visitor_token
AND datetime(vs.last_seen_at) >= datetime('now', '-90 seconds')
) AS visitor_online,
(SELECT COUNT(*) FROM conversations vc WHERE vc.site_id = c.site_id AND vc.visitor_token = c.visitor_token) AS visitor_conversation_count
FROM conversations c
JOIN sites s ON s.id = c.site_id