diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index f32d39a..71a2579 100755 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -699,9 +699,14 @@ class ApiController $result = $notificationModel->getForUser((int) $user['id'], $page, $perPage); $unreadCount = $notificationModel->getUnreadCount((int) $user['id']); + $data = array_map(function ($n) { + $n['time_ago'] = time_ago($n['created_at'] ?? ''); + return $n; + }, $result['data']); + $this->view->json([ 'success' => true, - 'data' => $result['data'], + 'data' => $data, 'pagination' => [ 'page' => $result['page'], 'per_page' => $result['per_page'], diff --git a/views/layouts/main.php b/views/layouts/main.php index 598df63..36010d4 100755 --- a/views/layouts/main.php +++ b/views/layouts/main.php @@ -295,7 +295,7 @@ function renderNotifications(items, unreadCount) { + '
' + '
' + escapeHtml(n.title) + '
' + '
' + escapeHtml(n.message) + '
' - + '
' + timeAgo(n.created_at) + '
' + + '
' + (n.time_ago || '') + '
' + '
' + (n.is_read ? '' : '
') + ''; @@ -374,18 +374,6 @@ function escapeHtml(str) { return d.innerHTML; } -function timeAgo(dateStr) { - const now = new Date(); - const d = new Date(dateStr.replace(' ', 'T') + (dateStr.includes('Z') ? '' : 'Z')); - const diff = Math.floor((now - d) / 1000); - if (diff < 60) return 'just now'; - if (diff < 3600) return Math.floor(diff / 60) + 'm ago'; - if (diff < 86400) return Math.floor(diff / 3600) + 'h ago'; - const days = Math.floor(diff / 86400); - if (days < 7) return days + 'd ago'; - return d.toLocaleDateString(); -} - // Poll unread count every 60s setInterval(updateUnreadCount, 60000); // Initial fetch