/** * Frontend Script for Last Played Track Logger */ jQuery(document).ready(function($) { /** * Auto refresh Now Playing */ function initAutoRefresh() { var widget = $('#lptl-player-widget'); var refreshEnabled = widget.data('auto-refresh') === 'true'; if (!refreshEnabled) return; // Refresh every 10 seconds setInterval(function() { refreshNowPlaying(); }, 10000); } /** * Refresh Now Playing via AJAX */ function refreshNowPlaying() { var display = $('#lptl-current-track-display'); if (!display.length) return; $.ajax({ url: lptl_frontend.ajax_url, method: 'POST', data: { action: 'lptl_get_current_track', nonce: lptl_frontend.nonce }, success: function(response) { if (response.success && response.data.track) { var track = response.data.track; var title = track; var artist = ''; // Parse artist - title if (track.indexOf(' - ') !== -1) { var parts = track.split(' - '); artist = parts[0]; title = parts[1] || parts[0]; } display.text(title); // Update artist if exists var artistEl = $('.lptl-now-playing-artist'); if (artistEl.length) { artistEl.text(artist); } } }, error: function() { // Silent fail } }); } /** * Refresh History via AJAX */ function refreshHistory(limit) { var historyList = $('.lptl-history-list'); if (!historyList.length) return; $.ajax({ url: lptl_frontend.ajax_url, method: 'POST', data: { action: 'lptl_get_history', limit: limit || 5, nonce: lptl_frontend.nonce }, success: function(response) { if (response.success && response.data.logs) { var logs = response.data.logs; var html = ''; $.each(logs, function(index, log) { var track = log.track || ''; var artist = ''; var title = track; if (track.indexOf(' - ') !== -1) { var parts = track.split(' - '); artist = parts[0]; title = parts[1] || parts[0]; } var isCurrent = index === 0 ? ' lptl-history-item-current' : ''; var sourceBadge = log.source === 'cron' ? ' 🤖' : ''; html += '