1(function ($) { 2 const wtnPlayerWrapper = $('#wtn-player'); 3 const isAndroidApp = window.WTN && window.WTN.isAndroidApp; 4 if (!isAndroidApp) return; 5 6 wtnPlayerWrapper.removeClass('d-none'); 7 8 let tracks = wtnPlayerData.tracks || []; 9 let currentTrackIndex = 0; 10 // let audio = new Audio(); 11 let isPlaying = false; 12 13 function loadTrack(index) { 14 let track = tracks[index]; 15 if (!track) return; 16 17 $('#track-title').text(track.name || 'Unknown Track'); 18 $('#track-image').attr('src', track.image || ''); 19 // audio.src = track.url || ''; 20 21 // Disable/Enable Prev and Next buttons based on track availability 22 $('#wtn-prev') 23 .prop('disabled', index === 0) 24 .toggle(tracks.length > 1); 25 $('#wtn-next') 26 .prop('disabled', index === tracks.length - 1) 27 .toggle(tracks.length > 1); 28 } 29 30 // Play/Pause Button 31 $('#wtn-play-pause').on('click', function () { 32 // alert('Play/Pause button clicked => ' + audio.paused); 33 if (!isPlaying) { 34 // audio.play(); 35 window?.WTN?.MediaPlayer?.playMedia({ url: tracks[currentTrackIndex]?.url, imageUrl: tracks[currentTrackIndex]?.image }); 36 $(this).text('â¸'); 37 isPlaying = true; 38 // alert('Audio is paused, playing now'); 39 } else { 40 // audio.pause(); 41 window?.WTN?.MediaPlayer?.pauseMedia(); 42 $(this).text('â¶'); 43 isPlaying = false; 44 // alert('Audio is playing, pausing now'); 45 } 46 }); 47 48 // Previous Button 49 $('#wtn-prev').on('click', function () { 50 if (currentTrackIndex > 0) { 51 window?.WTN?.MediaPlayer?.stopMedia(); 52 currentTrackIndex--; 53 loadTrack(currentTrackIndex); 54 // audio.play(); 55 window?.WTN?.MediaPlayer?.playMedia({ url: tracks[currentTrackIndex]?.url, imageUrl: tracks[currentTrackIndex]?.image }); 56 $('#wtn-play-pause').text('â¸'); // Update button state 57 isPlaying = true; 58 // alert('Prev track loaded =>' + tracks[currentTrackIndex]?.url); 59 } 60 }); 61 62 // Next Button 63 $('#wtn-next').on('click', function () { 64 if (currentTrackIndex < tracks.length - 1) { 65 window?.WTN?.MediaPlayer?.stopMedia(); 66 currentTrackIndex++; 67 loadTrack(currentTrackIndex); 68 // audio.play(); 69 window?.WTN?.MediaPlayer?.playMedia({ url: tracks[currentTrackIndex]?.url, imageUrl: tracks[currentTrackIndex]?.image }); 70 $('#wtn-play-pause').text('â¸'); // Update button state 71 isPlaying = true; 72 // alert('Next track loaded =>' + tracks[currentTrackIndex]?.url); 73 } 74 }); 75 76 // Hide Prev/Next buttons if only one track is present 77 if (tracks.length === 1) { 78 $('#wtn-prev, #wtn-next').hide(); 79 } 80 81 // Load the initial track without autoplay 82 if (tracks.length > 0) { 83 loadTrack(currentTrackIndex); 84 } 85})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.