import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { api } from '../api.js' import type { Item } from '../types.js' import Cover from '../components/Cover.js' export default function QueuePage() { const [items, setItems] = useState(null) const [error, setError] = useState(false) useEffect(() => { void api .listCollection({ ripped: 'not_ripped' }) .then((res) => setItems([...res.items].reverse())) .catch(() => setError(true)) }, []) function markRipped(id: number) { void api .setRip(id, true) .then(() => setItems((list) => (list ?? []).filter((i) => i.id !== id))) .catch(() => setError(true)) } return (

Rip queue — oldest additions first.

{error &&

Could not load the queue.

} {items && items.length === 0 && (

Nothing waiting to be ripped.

Scan something →
)} {items && items.map((item) => (

{item.title}

{item.artist} · added {new Date(item.dateAdded + 'Z').toLocaleDateString()}

details
))}
) }