style: auto-fix linting issues
This commit is contained in:
parent
db777a7923
commit
9d12693fec
4 changed files with 96 additions and 49 deletions
|
|
@ -1362,7 +1362,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="page-unreleased" class="page">
|
<div id="page-unreleased" class="page">
|
||||||
<div id="unreleased-content" style="padding: 1rem 0;"></div>
|
<div id="unreleased-content" style="padding: 1rem 0"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="page-tracker-artist" class="page">
|
<div id="page-tracker-artist" class="page">
|
||||||
|
|
@ -1756,7 +1756,11 @@
|
||||||
<h2 class="section-title">EPs and Singles</h2>
|
<h2 class="section-title">EPs and Singles</h2>
|
||||||
<div class="card-grid" id="artist-detail-eps"></div>
|
<div class="card-grid" id="artist-detail-eps"></div>
|
||||||
</section>
|
</section>
|
||||||
<section class="content-section" id="artist-section-load-unreleased" style="display: none; margin: 1.5rem 0;">
|
<section
|
||||||
|
class="content-section"
|
||||||
|
id="artist-section-load-unreleased"
|
||||||
|
style="display: none; margin: 1.5rem 0"
|
||||||
|
>
|
||||||
<button id="load-unreleased-btn" class="btn-primary">Load Unreleased Projects</button>
|
<button id="load-unreleased-btn" class="btn-primary">Load Unreleased Projects</button>
|
||||||
</section>
|
</section>
|
||||||
<section class="content-section" id="artist-section-unreleased" style="display: none">
|
<section class="content-section" id="artist-section-unreleased" style="display: none">
|
||||||
|
|
|
||||||
73
js/events.js
73
js/events.js
|
|
@ -1053,13 +1053,15 @@ export async function handleTrackAction(
|
||||||
// Show detailed track info modal
|
// Show detailed track info modal
|
||||||
const isTracker = item.isTracker;
|
const isTracker = item.isTracker;
|
||||||
let infoHTML = '';
|
let infoHTML = '';
|
||||||
|
|
||||||
if (isTracker && item.trackerInfo) {
|
if (isTracker && item.trackerInfo) {
|
||||||
// Detailed unreleased/tracker track info
|
// Detailed unreleased/tracker track info
|
||||||
const releaseDate = item.trackerInfo.releaseDate || item.streamStartDate;
|
const releaseDate = item.trackerInfo.releaseDate || item.streamStartDate;
|
||||||
const dateDisplay = releaseDate ? new Date(releaseDate).toLocaleDateString() : 'Unknown';
|
const dateDisplay = releaseDate ? new Date(releaseDate).toLocaleDateString() : 'Unknown';
|
||||||
const addedDate = item.trackerInfo.addedDate ? new Date(item.trackerInfo.addedDate).toLocaleDateString() : 'Unknown';
|
const addedDate = item.trackerInfo.addedDate
|
||||||
|
? new Date(item.trackerInfo.addedDate).toLocaleDateString()
|
||||||
|
: 'Unknown';
|
||||||
|
|
||||||
infoHTML = `
|
infoHTML = `
|
||||||
<div style="padding: 1.5rem; max-width: 500px; max-height: 80vh; overflow-y: auto;">
|
<div style="padding: 1.5rem; max-width: 500px; max-height: 80vh; overflow-y: auto;">
|
||||||
<h3 style="margin-bottom: 1rem; font-size: 1.3rem; font-weight: 600;">${item.title}</h3>
|
<h3 style="margin-bottom: 1rem; font-size: 1.3rem; font-weight: 600;">${item.title}</h3>
|
||||||
|
|
@ -1069,7 +1071,7 @@ export async function handleTrackAction(
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display: grid; gap: 0.5rem;">
|
<div style="display: grid; gap: 0.5rem;">
|
||||||
${item.artists ? `<p><strong style="color: var(--foreground);">Artist:</strong> ${Array.isArray(item.artists) ? item.artists.map(a => a.name || a).join(', ') : item.artists}</p>` : ''}
|
${item.artists ? `<p><strong style="color: var(--foreground);">Artist:</strong> ${Array.isArray(item.artists) ? item.artists.map((a) => a.name || a).join(', ') : item.artists}</p>` : ''}
|
||||||
${item.trackerInfo.artist ? `<p><strong style="color: var(--foreground);">Tracked Artist:</strong> ${item.trackerInfo.artist}</p>` : ''}
|
${item.trackerInfo.artist ? `<p><strong style="color: var(--foreground);">Tracked Artist:</strong> ${item.trackerInfo.artist}</p>` : ''}
|
||||||
${item.trackerInfo.project ? `<p><strong style="color: var(--foreground);">Project:</strong> ${item.trackerInfo.project}</p>` : ''}
|
${item.trackerInfo.project ? `<p><strong style="color: var(--foreground);">Project:</strong> ${item.trackerInfo.project}</p>` : ''}
|
||||||
${item.trackerInfo.era ? `<p><strong style="color: var(--foreground);">Era:</strong> ${item.trackerInfo.era}</p>` : ''}
|
${item.trackerInfo.era ? `<p><strong style="color: var(--foreground);">Era:</strong> ${item.trackerInfo.era}</p>` : ''}
|
||||||
|
|
@ -1083,28 +1085,40 @@ export async function handleTrackAction(
|
||||||
${item.trackerInfo.recordingDate ? `<p><strong style="color: var(--foreground);">Recording Date:</strong> ${new Date(item.trackerInfo.recordingDate).toLocaleDateString()}</p>` : ''}
|
${item.trackerInfo.recordingDate ? `<p><strong style="color: var(--foreground);">Recording Date:</strong> ${new Date(item.trackerInfo.recordingDate).toLocaleDateString()}</p>` : ''}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
${item.trackerInfo.description ? `
|
${
|
||||||
|
item.trackerInfo.description
|
||||||
|
? `
|
||||||
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
||||||
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Description</p>
|
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Description</p>
|
||||||
<p style="font-size: 0.85rem; line-height: 1.6;">${item.trackerInfo.description}</p>
|
<p style="font-size: 0.85rem; line-height: 1.6;">${item.trackerInfo.description}</p>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.trackerInfo.notes ? `
|
${
|
||||||
|
item.trackerInfo.notes
|
||||||
|
? `
|
||||||
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
||||||
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Notes</p>
|
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Notes</p>
|
||||||
<p style="font-size: 0.85rem; line-height: 1.6;">${item.trackerInfo.notes}</p>
|
<p style="font-size: 0.85rem; line-height: 1.6;">${item.trackerInfo.notes}</p>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.trackerInfo.sourceUrl ? `
|
${
|
||||||
|
item.trackerInfo.sourceUrl
|
||||||
|
? `
|
||||||
<div style="margin-top: 1rem;">
|
<div style="margin-top: 1rem;">
|
||||||
<p style="margin-bottom: 0.5rem;"><strong style="color: var(--foreground);">Source URL:</strong></p>
|
<p style="margin-bottom: 0.5rem;"><strong style="color: var(--foreground);">Source URL:</strong></p>
|
||||||
<a href="${item.trackerInfo.sourceUrl}" target="_blank" style="color: var(--primary); word-break: break-all; font-size: 0.85rem; display: block; padding: 0.5rem; background: var(--accent); border-radius: 6px; text-decoration: none;">
|
<a href="${item.trackerInfo.sourceUrl}" target="_blank" style="color: var(--primary); word-break: break-all; font-size: 0.85rem; display: block; padding: 0.5rem; background: var(--accent); border-radius: 6px; text-decoration: none;">
|
||||||
${item.trackerInfo.sourceUrl}
|
${item.trackerInfo.sourceUrl}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.id ? `<p style="margin-top: 1rem; font-size: 0.8rem; color: var(--muted);"><strong>Track ID:</strong> ${item.id}</p>` : ''}
|
${item.id ? `<p style="margin-top: 1rem; font-size: 0.8rem; color: var(--muted);"><strong>Track ID:</strong> ${item.id}</p>` : ''}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1117,7 +1131,7 @@ export async function handleTrackAction(
|
||||||
const dateDisplay = releaseDate ? new Date(releaseDate).toLocaleDateString() : 'Unknown';
|
const dateDisplay = releaseDate ? new Date(releaseDate).toLocaleDateString() : 'Unknown';
|
||||||
const quality = item.audioQuality || 'Unknown';
|
const quality = item.audioQuality || 'Unknown';
|
||||||
const bitrate = item.bitrate ? `${item.bitrate} kbps` : '';
|
const bitrate = item.bitrate ? `${item.bitrate} kbps` : '';
|
||||||
|
|
||||||
infoHTML = `
|
infoHTML = `
|
||||||
<div style="padding: 1.5rem; max-width: 500px; max-height: 80vh; overflow-y: auto;">
|
<div style="padding: 1.5rem; max-width: 500px; max-height: 80vh; overflow-y: auto;">
|
||||||
<h3 style="margin-bottom: 1rem; font-size: 1.3rem; font-weight: 600;">${item.title}</h3>
|
<h3 style="margin-bottom: 1rem; font-size: 1.3rem; font-weight: 600;">${item.title}</h3>
|
||||||
|
|
@ -1135,24 +1149,36 @@ export async function handleTrackAction(
|
||||||
<p><strong style="color: var(--foreground);">Quality:</strong> ${quality} ${bitrate ? `(${bitrate})` : ''}</p>
|
<p><strong style="color: var(--foreground);">Quality:</strong> ${quality} ${bitrate ? `(${bitrate})` : ''}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
${item.credits && item.credits.length > 0 ? `
|
${
|
||||||
|
item.credits && item.credits.length > 0
|
||||||
|
? `
|
||||||
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
||||||
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Credits</p>
|
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Credits</p>
|
||||||
<div style="font-size: 0.85rem; line-height: 1.6;">
|
<div style="font-size: 0.85rem; line-height: 1.6;">
|
||||||
${item.credits.map(c => `<p>${c.type}: ${c.name}</p>`).join('')}
|
${item.credits.map((c) => `<p>${c.type}: ${c.name}</p>`).join('')}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.composers && item.composers.length > 0 ? `
|
${
|
||||||
<p style="margin-top: 0.5rem;"><strong style="color: var(--foreground);">Composers:</strong> ${item.composers.map(c => c.name).join(', ')}</p>
|
item.composers && item.composers.length > 0
|
||||||
` : ''}
|
? `
|
||||||
|
<p style="margin-top: 0.5rem;"><strong style="color: var(--foreground);">Composers:</strong> ${item.composers.map((c) => c.name).join(', ')}</p>
|
||||||
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.lyrics?.text ? `
|
${
|
||||||
|
item.lyrics?.text
|
||||||
|
? `
|
||||||
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
<div style="margin-top: 1rem; padding: 0.75rem; background: var(--accent); border-radius: 8px;">
|
||||||
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Has Lyrics</p>
|
<p style="color: var(--foreground); font-weight: 500; margin-bottom: 0.5rem;">Has Lyrics</p>
|
||||||
</div>
|
</div>
|
||||||
` : ''}
|
`
|
||||||
|
: ''
|
||||||
|
}
|
||||||
|
|
||||||
${item.id ? `<p style="margin-top: 1rem; font-size: 0.8rem; color: var(--muted);"><strong>Track ID:</strong> ${item.id}</p>` : ''}
|
${item.id ? `<p style="margin-top: 1rem; font-size: 0.8rem; color: var(--muted);"><strong>Track ID:</strong> ${item.id}</p>` : ''}
|
||||||
${item.album?.id ? `<p style="font-size: 0.8rem; color: var(--muted);"><strong>Album ID:</strong> ${item.album.id}</p>` : ''}
|
${item.album?.id ? `<p style="font-size: 0.8rem; color: var(--muted);"><strong>Album ID:</strong> ${item.album.id}</p>` : ''}
|
||||||
|
|
@ -1161,11 +1187,12 @@ export async function handleTrackAction(
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create and show modal
|
// Create and show modal
|
||||||
const modal = document.createElement('div');
|
const modal = document.createElement('div');
|
||||||
modal.className = 'modal-overlay';
|
modal.className = 'modal-overlay';
|
||||||
modal.style.cssText = 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; z-index: 10000;';
|
modal.style.cssText =
|
||||||
|
'position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; z-index: 10000;';
|
||||||
modal.innerHTML = infoHTML;
|
modal.innerHTML = infoHTML;
|
||||||
modal.onclick = (e) => {
|
modal.onclick = (e) => {
|
||||||
if (e.target === modal) modal.remove();
|
if (e.target === modal) modal.remove();
|
||||||
|
|
@ -1174,13 +1201,13 @@ export async function handleTrackAction(
|
||||||
} else if (action === 'open-original-url') {
|
} else if (action === 'open-original-url') {
|
||||||
// Open the original source URL for the track
|
// Open the original source URL for the track
|
||||||
let url = null;
|
let url = null;
|
||||||
|
|
||||||
if (item.isTracker && item.trackerInfo && item.trackerInfo.sourceUrl) {
|
if (item.isTracker && item.trackerInfo && item.trackerInfo.sourceUrl) {
|
||||||
url = item.trackerInfo.sourceUrl;
|
url = item.trackerInfo.sourceUrl;
|
||||||
} else if (item.remoteUrl) {
|
} else if (item.remoteUrl) {
|
||||||
url = item.remoteUrl;
|
url = item.remoteUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
window.open(url, '_blank');
|
window.open(url, '_blank');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -356,7 +356,7 @@ export class Player {
|
||||||
this.applyReplayGain();
|
this.applyReplayGain();
|
||||||
|
|
||||||
this.audio.src = streamUrl;
|
this.audio.src = streamUrl;
|
||||||
|
|
||||||
// Wait for audio to be ready before playing (prevents restart issues with blob URLs)
|
// Wait for audio to be ready before playing (prevents restart issues with blob URLs)
|
||||||
if (isTracker) {
|
if (isTracker) {
|
||||||
await new Promise((resolve, reject) => {
|
await new Promise((resolve, reject) => {
|
||||||
|
|
@ -372,7 +372,7 @@ export class Player {
|
||||||
};
|
};
|
||||||
this.audio.addEventListener('canplay', onCanPlay);
|
this.audio.addEventListener('canplay', onCanPlay);
|
||||||
this.audio.addEventListener('error', onError);
|
this.audio.addEventListener('error', onError);
|
||||||
|
|
||||||
// Timeout after 10 seconds
|
// Timeout after 10 seconds
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.audio.removeEventListener('canplay', onCanPlay);
|
this.audio.removeEventListener('canplay', onCanPlay);
|
||||||
|
|
@ -381,7 +381,7 @@ export class Player {
|
||||||
}, 10000);
|
}, 10000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startTime > 0) {
|
if (startTime > 0) {
|
||||||
this.audio.currentTime = startTime;
|
this.audio.currentTime = startTime;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
58
js/ui.js
58
js/ui.js
|
|
@ -23,7 +23,15 @@ import { getVibrantColorFromImage } from './vibrant-color.js';
|
||||||
import { syncManager } from './accounts/pocketbase.js';
|
import { syncManager } from './accounts/pocketbase.js';
|
||||||
import { Visualizer } from './visualizer.js';
|
import { Visualizer } from './visualizer.js';
|
||||||
import { navigate } from './router.js';
|
import { navigate } from './router.js';
|
||||||
import { renderUnreleasedPage as renderUnreleasedTrackerPage, renderTrackerArtistPage as renderTrackerArtistContent, renderTrackerProjectPage as renderTrackerProjectContent, renderTrackerTrackPage as renderTrackerTrackContent, findTrackerArtistByName, getArtistUnreleasedProjects, createProjectCardHTML } from './tracker.js';
|
import {
|
||||||
|
renderUnreleasedPage as renderUnreleasedTrackerPage,
|
||||||
|
renderTrackerArtistPage as renderTrackerArtistContent,
|
||||||
|
renderTrackerProjectPage as renderTrackerProjectContent,
|
||||||
|
renderTrackerTrackPage as renderTrackerTrackContent,
|
||||||
|
findTrackerArtistByName,
|
||||||
|
getArtistUnreleasedProjects,
|
||||||
|
createProjectCardHTML,
|
||||||
|
} from './tracker.js';
|
||||||
|
|
||||||
export class UIRenderer {
|
export class UIRenderer {
|
||||||
constructor(api, player) {
|
constructor(api, player) {
|
||||||
|
|
@ -120,7 +128,7 @@ export class UIRenderer {
|
||||||
this.updateLikeState(likeBtn.parentElement, 'track', track.id);
|
this.updateLikeState(likeBtn.parentElement, 'track', track.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// For tracker tracks: show add playlist, hide lyrics
|
// For tracker tracks: show add playlist, hide lyrics
|
||||||
// For normal tracks: hide add playlist, show lyrics (unless local)
|
// For normal tracks: hide add playlist, show lyrics (unless local)
|
||||||
if (addPlaylistBtn) {
|
if (addPlaylistBtn) {
|
||||||
|
|
@ -2322,42 +2330,44 @@ export class UIRenderer {
|
||||||
// Initially hide the unreleased section
|
// Initially hide the unreleased section
|
||||||
unreleasedSection.style.display = 'none';
|
unreleasedSection.style.display = 'none';
|
||||||
loadUnreleasedSection.style.display = 'none';
|
loadUnreleasedSection.style.display = 'none';
|
||||||
|
|
||||||
// Check if artist has unreleased projects
|
// Check if artist has unreleased projects
|
||||||
const trackerArtist = findTrackerArtistByName(artist.name);
|
const trackerArtist = findTrackerArtistByName(artist.name);
|
||||||
if (trackerArtist) {
|
if (trackerArtist) {
|
||||||
// Show the load button section
|
// Show the load button section
|
||||||
loadUnreleasedSection.style.display = 'block';
|
loadUnreleasedSection.style.display = 'block';
|
||||||
|
|
||||||
// Add click handler to load and display unreleased projects
|
// Add click handler to load and display unreleased projects
|
||||||
loadUnreleasedBtn.onclick = async () => {
|
loadUnreleasedBtn.onclick = async () => {
|
||||||
loadUnreleasedBtn.disabled = true;
|
loadUnreleasedBtn.disabled = true;
|
||||||
loadUnreleasedBtn.textContent = 'Loading...';
|
loadUnreleasedBtn.textContent = 'Loading...';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const unreleasedData = await getArtistUnreleasedProjects(artist.name);
|
const unreleasedData = await getArtistUnreleasedProjects(artist.name);
|
||||||
if (unreleasedData && unreleasedData.eras.length > 0) {
|
if (unreleasedData && unreleasedData.eras.length > 0) {
|
||||||
const { artist: trackerArtistData, sheetId, eras } = unreleasedData;
|
const { artist: trackerArtistData, sheetId, eras } = unreleasedData;
|
||||||
|
|
||||||
unreleasedContainer.innerHTML = eras.map(e => {
|
unreleasedContainer.innerHTML = eras
|
||||||
let trackCount = 0;
|
.map((e) => {
|
||||||
if (e.data) {
|
let trackCount = 0;
|
||||||
Object.values(e.data).forEach((songs) => {
|
if (e.data) {
|
||||||
if (songs && songs.length) trackCount += songs.length;
|
Object.values(e.data).forEach((songs) => {
|
||||||
});
|
if (songs && songs.length) trackCount += songs.length;
|
||||||
}
|
});
|
||||||
return createProjectCardHTML(e, trackerArtistData, sheetId, trackCount);
|
}
|
||||||
}).join('');
|
return createProjectCardHTML(e, trackerArtistData, sheetId, trackCount);
|
||||||
|
})
|
||||||
|
.join('');
|
||||||
|
|
||||||
unreleasedSection.style.display = 'block';
|
unreleasedSection.style.display = 'block';
|
||||||
loadUnreleasedBtn.style.display = 'none';
|
loadUnreleasedBtn.style.display = 'none';
|
||||||
|
|
||||||
// Add click handlers
|
// Add click handlers
|
||||||
unreleasedContainer.querySelectorAll('.card').forEach((card) => {
|
unreleasedContainer.querySelectorAll('.card').forEach((card) => {
|
||||||
const eraName = decodeURIComponent(card.dataset.trackerProjectId);
|
const eraName = decodeURIComponent(card.dataset.trackerProjectId);
|
||||||
const era = eras.find(e => e.name === eraName);
|
const era = eras.find((e) => e.name === eraName);
|
||||||
if (!era) return;
|
if (!era) return;
|
||||||
|
|
||||||
card.onclick = (e) => {
|
card.onclick = (e) => {
|
||||||
if (e.target.closest('.card-play-btn')) {
|
if (e.target.closest('.card-play-btn')) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
@ -2366,13 +2376,19 @@ export class UIRenderer {
|
||||||
Object.values(era.data).forEach((songs) => {
|
Object.values(era.data).forEach((songs) => {
|
||||||
if (songs && songs.length) {
|
if (songs && songs.length) {
|
||||||
songs.forEach((song, index) => {
|
songs.forEach((song, index) => {
|
||||||
const track = createTrackFromSong(song, era, trackerArtistData.name, eraTracks.length, sheetId);
|
const track = createTrackFromSong(
|
||||||
|
song,
|
||||||
|
era,
|
||||||
|
trackerArtistData.name,
|
||||||
|
eraTracks.length,
|
||||||
|
sheetId
|
||||||
|
);
|
||||||
eraTracks.push(track);
|
eraTracks.push(track);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const availableTracks = eraTracks.filter(t => !t.unavailable);
|
const availableTracks = eraTracks.filter((t) => !t.unavailable);
|
||||||
if (availableTracks.length > 0) {
|
if (availableTracks.length > 0) {
|
||||||
globalPlayer.setQueue(availableTracks, 0);
|
globalPlayer.setQueue(availableTracks, 0);
|
||||||
globalPlayer.playTrackFromQueue();
|
globalPlayer.playTrackFromQueue();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue