add to watchlist button
This commit is contained in:
parent
42faf2ad31
commit
91bb767faa
2 changed files with 79 additions and 7 deletions
|
|
@ -1638,9 +1638,9 @@
|
||||||
<span class="button-icon">▶</span>
|
<span class="button-icon">▶</span>
|
||||||
<span class="button-text">Play</span>
|
<span class="button-text">Play</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="discover-hero-button secondary" id="discover-hero-add">
|
<button class="discover-hero-button secondary watchlist-toggle-btn" id="discover-hero-add" onclick="toggleDiscoverHeroWatchlist(event)">
|
||||||
<span class="button-icon">+</span>
|
<span class="watchlist-icon">👁️</span>
|
||||||
<span class="button-text">Add to Wishlist</span>
|
<span class="watchlist-text">Add to Watchlist</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -24449,10 +24449,21 @@ function displayDiscoverHeroArtist(artist) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (subtitleEl) {
|
if (subtitleEl) {
|
||||||
const genres = artist.genres && artist.genres.length > 0
|
// Show recommendation context based on occurrence count
|
||||||
? artist.genres.slice(0, 3).join(', ')
|
let subtitle = '';
|
||||||
: 'Discover new music';
|
if (artist.occurrence_count > 1) {
|
||||||
subtitleEl.textContent = genres;
|
subtitle = `Similar to ${artist.occurrence_count} artists in your watchlist`;
|
||||||
|
} else {
|
||||||
|
subtitle = 'Similar to an artist in your watchlist';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add genre context if available
|
||||||
|
if (artist.genres && artist.genres.length > 0) {
|
||||||
|
const topGenres = artist.genres.slice(0, 2).join(', ');
|
||||||
|
subtitle += ` • ${topGenres}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
subtitleEl.textContent = subtitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imageEl && artist.image_url) {
|
if (imageEl && artist.image_url) {
|
||||||
|
|
@ -24466,6 +24477,67 @@ function displayDiscoverHeroArtist(artist) {
|
||||||
bgEl.style.backgroundSize = 'cover';
|
bgEl.style.backgroundSize = 'cover';
|
||||||
bgEl.style.backgroundPosition = 'center';
|
bgEl.style.backgroundPosition = 'center';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Store artist ID for watchlist button and update its state
|
||||||
|
const addBtn = document.getElementById('discover-hero-add');
|
||||||
|
if (addBtn && artist.spotify_artist_id) {
|
||||||
|
addBtn.setAttribute('data-artist-id', artist.spotify_artist_id);
|
||||||
|
addBtn.setAttribute('data-artist-name', artist.artist_name);
|
||||||
|
|
||||||
|
// Check if this artist is already in watchlist and update button appearance
|
||||||
|
checkAndUpdateDiscoverHeroWatchlistButton(artist.spotify_artist_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function checkAndUpdateDiscoverHeroWatchlistButton(artistId) {
|
||||||
|
try {
|
||||||
|
const response = await fetch('/api/watchlist/check', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ artist_id: artistId })
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
if (!data.success) return;
|
||||||
|
|
||||||
|
const addBtn = document.getElementById('discover-hero-add');
|
||||||
|
if (!addBtn) return;
|
||||||
|
|
||||||
|
const icon = addBtn.querySelector('.watchlist-icon');
|
||||||
|
const text = addBtn.querySelector('.watchlist-text');
|
||||||
|
|
||||||
|
if (data.is_watching) {
|
||||||
|
// Artist is in watchlist
|
||||||
|
if (icon) icon.textContent = '👁️';
|
||||||
|
if (text) text.textContent = 'Watching...';
|
||||||
|
addBtn.classList.add('watching');
|
||||||
|
} else {
|
||||||
|
// Artist not in watchlist
|
||||||
|
if (icon) icon.textContent = '👁️';
|
||||||
|
if (text) text.textContent = 'Add to Watchlist';
|
||||||
|
addBtn.classList.remove('watching');
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error checking watchlist status for hero:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleDiscoverHeroWatchlist(event) {
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
const button = document.getElementById('discover-hero-add');
|
||||||
|
if (!button) return;
|
||||||
|
|
||||||
|
const artistId = button.getAttribute('data-artist-id');
|
||||||
|
const artistName = button.getAttribute('data-artist-name');
|
||||||
|
|
||||||
|
if (!artistId || !artistName) {
|
||||||
|
console.error('No artist data found on discover hero button');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call the existing toggleWatchlist function
|
||||||
|
toggleWatchlist(event, artistId, artistName);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showDiscoverHeroEmpty() {
|
function showDiscoverHeroEmpty() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue