Fix Discover page: stringify IDs for Set comparisons, show result count

This commit is contained in:
root
2026-03-31 10:22:07 -05:00
parent 85d4210a21
commit 75ca5fff64

View File

@@ -87,36 +87,38 @@ export default function Discover() {
} }
const handleToggleSave = async (id: string) => { const handleToggleSave = async (id: string) => {
setSavingIds((prev) => new Set(prev).add(id)) const sid = String(id)
setSavingIds((prev) => new Set(prev).add(sid))
try { try {
const { saved } = await toggleSaveRecommendation(id) const { saved } = await toggleSaveRecommendation(sid)
setResults((prev) => setResults((prev) =>
prev.map((r) => (r.id === id ? { ...r, saved } : r)) prev.map((r) => (String(r.id) === sid ? { ...r, saved } : r))
) )
} catch { } catch {
// silent // silent
} finally { } finally {
setSavingIds((prev) => { setSavingIds((prev) => {
const next = new Set(prev) const next = new Set(prev)
next.delete(id) next.delete(sid)
return next return next
}) })
} }
} }
const handleDislike = async (id: string) => { const handleDislike = async (id: string) => {
setDislikingIds((prev) => new Set(prev).add(id)) const sid = String(id)
setDislikingIds((prev) => new Set(prev).add(sid))
try { try {
const { disliked } = await dislikeRecommendation(id) const { disliked } = await dislikeRecommendation(sid)
setResults((prev) => setResults((prev) =>
prev.map((r) => (r.id === id ? { ...r, disliked } : r)) prev.map((r) => (String(r.id) === sid ? { ...r, disliked } : r))
) )
} catch { } catch {
// silent // silent
} finally { } finally {
setDislikingIds((prev) => { setDislikingIds((prev) => {
const next = new Set(prev) const next = new Set(prev)
next.delete(id) next.delete(sid)
return next return next
}) })
} }
@@ -298,7 +300,7 @@ export default function Discover() {
{results.length > 0 && ( {results.length > 0 && (
<div> <div>
<h2 className="text-lg font-semibold text-charcoal mb-4"> <h2 className="text-lg font-semibold text-charcoal mb-4">
Your Recommendations Your Recommendations ({results.length})
</h2> </h2>
<div className="space-y-3"> <div className="space-y-3">
{results.map((rec) => ( {results.map((rec) => (
@@ -307,13 +309,19 @@ export default function Discover() {
recommendation={rec} recommendation={rec}
onToggleSave={handleToggleSave} onToggleSave={handleToggleSave}
onDislike={handleDislike} onDislike={handleDislike}
saving={savingIds.has(rec.id)} saving={savingIds.has(String(rec.id))}
disliking={dislikingIds.has(rec.id)} disliking={dislikingIds.has(String(rec.id))}
/> />
))} ))}
</div> </div>
</div> </div>
)} )}
{!discovering && results.length === 0 && !error && (selectedPlaylist || query.trim()) && (
<p className="text-charcoal-muted text-sm text-center py-4">
Click "Discover Music" to get recommendations
</p>
)}
</div> </div>
) )
} }