let contacts = [];
let activeOccupantId = null;
let activeAvatarUrl = '';
function formatTime(dateStr) {
if(!dateStr) return '';
const date = new Date(dateStr);
let hours = date.getHours();
let minutes = date.getMinutes();
const ampm = hours >= 12 ? 'PM' : 'AM';
hours = hours % 12;
hours = hours ? hours : 12;
minutes = minutes < 10 ? '0'+minutes : minutes;
return hours + ':' + minutes + ' ' + ampm;
}
function formatRelative(dateStr) {
if(!dateStr) return '';
const date = new Date(dateStr);
const now = new Date();
const diffMs = now - date;
const diffMins = Math.floor(diffMs / 60000);
if(diffMins < 60) return diffMins + ' Min';
const diffHours = Math.floor(diffMins / 60);
if(diffHours < 24) return diffHours + ' Hour';
const diffDays = Math.floor(diffHours / 24);
return diffDays + ' Day';
}
function loadContacts() {
$.post('chat_api.php', { action: 'get_contacts' }, function(res) {
if(res.status === 'success') {
contacts = res.data;
renderContacts(contacts);
}
}, 'json');
}
function renderContacts(data) {
let chatsHtml = '';
let contactsHtml = '';
const nowServer = new Date();
data.forEach(c => {
let activeClass = (c.id_occupant == activeOccupantId) ? 'active' : '';
// Cek jika pesan berisi media sebelumnya dicadangkan sbg teks dummy
let rawLastMsg = c.last_message || '';
let strippedMsg = rawLastMsg.replace(/<[^>]*>?/gm, '').trim();
if(!strippedMsg && rawLastMsg.includes(' 0 && c.id_occupant != activeOccupantId) {
unreadBadge = `${c.unread_count}`;
nameStyle = 'font-weight: 800; color: #000;';
msgStyle = 'font-weight: 700; color: #222;';
}
let html = `